奇妙な動作が発生する SSAS に問題があります。私は立方体を生産していますが、問題のシミュレーションのために、問題を切り分けるために小さな立方体を作成しました。問題をシミュレートする小さな立方体を作成しました。このキューブには、1 つのディメンションと 1 つのファクトがあります。[販売テリトリー] で、UnknownMember プロパティを true に設定しました。キューブ計算では、以下に簡単なスコープ コードを配置します。
SCOPE([Measures].[SalesAmountCustomValue]);
THIS = [Measures].CurrentMember+10000000;
END SCOPE;
SQL Server 2008 R2 で以下の MDX を実行しましたが、集計関数で UnknownMember を使用した場合と使用しなかった場合で結果が異なります。SQL Server 2012 では、結果は予想どおりです。
WITH
MEMBER [Sales Territory].[Sales Territory Country].[Countries] AS
Aggregate(
{
[Sales Territory].[Sales Territory Country].[All].UNKNOWNMEMBER,
[Sales Territory].[Sales Territory Country].&[9],
[Sales Territory].[Sales Territory Country].&[6]
}
)
MEMBER [Measures].[SalesAmountCustomValueWithAggregate] AS
(
[Sales Territory].[Sales Territory Country].[Countries],
[Measures].[SalesAmountCustomValue]
),
FORMAT_STRING="0,000;-0,000"
SELECT {
[Measures].[SalesAmount],
[Measures].[SalesAmountCustomValue],
[Measures].[SalesAmountCustomValueWithAggregate]
} ON 0
FROM AdventureWorks
WHERE {
[Sales Territory].[Sales Territory Country].[All].UNKNOWNMEMBER,
[Sales Territory].[Sales Territory Country].&[9],
[Sales Territory].[Sales Territory Country].&[6]
}
結果は次のとおりです。
- 売上高: 11,038,845
- SalesAmountCustomValue: 21,038,845
- SalesAmountCustomValueWithAggregate: 41,038,845
集計関数の UnknownMember を削除すると、結果は次のようになります。
- 売上高: 11,038,845
- SalesAmountCustomValue: 21,038,845
- SalesAmountCustomValueWithAggregate: 21,038,845
MDX エンジンの動作が異なります。最初の例では、集計関数の前にメンバーごとにスコープ計算が実行されます。この場合、スコープ計算は 3 回実行されます。[Sales Territory].[Sales Territory Country].&[AAA] のように集計関数に無効なメンバーを入れても同様のことが起こりますが、この場合、SQL 2008 R2 と SQL 2012 で 2 回スコープ計算が実行されます。
UnknownMember を削除すると、スコープ計算が 1 回実行され、合計で 100 億になります。
同じ MDX に対して、SQL 2012 と同じ動作が必要です。
- 売上高: 11,038,845
- SalesAmountCustomValue: 21,038,845
- SalesAmountCustomValueWithAggregate: 21,038,845
次のバージョンをテストしました。
- SQL 2008R2 SP2 10.50.4279.0 x64
- SQL 2012 11.0.2100.60 x64
何が起こっているのかについて何か考えはありますか?
よろしくお願いします。
パウロ・コレア