3

Adventure Works Cube を使用して、次のコードを実行すると (MS の例から):

with 
Member [Measures].[Internet Sales Amount - Range]
AS aggregate ( [Date].[Fiscal].[Date].&[20080430]:[Date].[Fiscal].[Date].&[20080502] , [Measures].[Internet Sales Amount] )

SELECT
{ [Measures].[Internet Sales Amount - Range] } ON COLUMNS,
{ [Product].[Category].Members } ON ROWS
FROM
[Adventure Works]

適切な結果が得られます。

ただし、計算されたタブで SCOPE コマンドを使用して同様の機能を実装すると、次のようになります。

scope ([Product].[Category], [Measures].[Internet Sales Amount]);

    this = aggregate ( [Date].[Fiscal].[Date].&[20080430]:[Date].[Fiscal].[Date].&[20080502] , [Measures].[Internet Sales Amount] );

end scope;

次に、次の mdx クエリを実行します。

SELECT
{ [Measures].[Internet Sales Amount] } ON COLUMNS,
{ [Product].[Category].Members } ON ROWS
FROM
[Adventure Works]

大きく異なる結果が得られます。スコープは、日付範囲またはカテゴリ メンバーを無視しているように見えますが、何がわかりません。日付範囲で新しいスコープを作成するときに、キューブで同様の問題が発生しています。

スコープで何が起こっているか知っている人はいますか?

4

1 に答える 1

2

使用する

CREATE MEMBER CurrentCube.[Measures].[Internet Sales Amount - Range2] AS NULL;

scope ([Measures].[Internet Sales Amount - Range2]);
    this = aggregate ( [Date].[Fiscal].[Date].&[20080430]:[Date].[Fiscal].[Date].&[20080502] , [Measures].[Internet Sales Amount] );
end scope;

そうしないと、それ自体でもscope使用する内のメジャーを参照するときに、無限再帰が発生する可能性があります。SCOPE

于 2013-09-25T17:57:58.710 に答える