組織構造階層が定義された単純なデータ キューブがあります。キューブ内の計算では、MDX クエリのWHERE句で現在使用されている組織アイテムのレベルに応じて、異なる計算を行いたいと考えています。
たとえば、5 つのレベルの組織構造があり、最後のレベル (店舗レベル) では、式を使用して計算方法を変更したいとします。
IIF([Organization Structure].[Parent Id].LEVEL IS
[Organization Structure].[Parent Id].[Level 05], 'THIS IS STORE', 'THIS IS NOT')
これにより、Visual Studio ブラウザーで実際に必要なものが得られます。
次のような MDX クエリを使用する場合も同様です。
SELECT { [Measures].[TEST] } ON COLUMNS
FROM [DataCubeName]
WHERE
{
[Organization Structure].[Parent Id].&[123]
}
問題が発生するのは、 WHERE句で複数の組織構造項目を使用したい場合です。この句には同じレベルのアイテムのみを含めることができます。どのレベルか知りたいのですが、もちろんWHEREに 2 番目のアイテムを追加すると、次のようになります。
SELECT { [Measures].[TEST] } ON COLUMNS
FROM [DataCubeName]
WHERE
{
[Organization Structure].[Parent Id].&[123],
[Organization Structure].[Parent Id].&[124]
}
「属性の座標にセットが含まれているため、現在のメンバーが失敗しました」というエラーが表示されます。
そのため、私の式では ITEM(0) 関数をさまざまな構成で使用しようとしましたが、現在WHERE句で使用されている一連の項目で使用する方法が見つかりませんでした...質問は:
現在実行されている WHERE 句にリストされているアイテムのセットを取得して、そのセットで Item(0) を使用できるようにする方法、または現在選択されているアイテムのレベルを取得する他の方法はありますか?同じレベル?