2017-05-13 9 views
1

集約された名前付きセットを使用して、MDXでクエリをフィルタリングすることはできますか?結果セットの設定項目をWHEREに移動する必要はありませんが、これによりすべての数値が返されます(null)。WHERE using Named Set

まず、私はスタッフの階層からメンバーのカップルを使用してセットを構築:

WITH 
    SET [Combined] as { 
    [Staff].[Group].[Practice Group].&[04], 
    [Staff].[Group].[Practice Group].&[06] 
    } 

その後、私は新しいメンバーにそのセットを集約:

MEMBER [Staff].[Group].[Group Combo] AS Aggregate([Combined]) 

通常私は、これを使用しますおそらく階層化して(クエリに応じて)、すべてがうまくいきます。しかし、私はメンバーの組み合わせに基づいてデータをフィルタリングするために必要なこの時間は、例えば:

WHERE ([Staff].[Group].[Group Combo]) 

は、これは私(ヌル)の値を与えたと私は[複合]を使用した場合、私はしかし、以下に働い使用して、周期的な参照エラーを受け取りました詳細:

WHERE ({[Staff].[Group].[Practice Group].&[04],[Staff].[Group].[Practice Group].&[06]}) 

私はここで何か見落としていますか?または間違ったアプローチを使用して?たぶんそれは私が照会している立方体のちょっとした変わったものでしょうか?

答えて

2

私は行動は、プロセッサがあなたのクエリ内の句を実行される順序に関係していると言うでしょう:

Logical order an MDX query is processed

WHEREは、あなたは、次の作品と述べWITH

前に起こります細かい - where句に明示的なメンバーを指定するとかなり標準的ですと速い

あなたはそれが0軸上にある同じように、サブ選択に追加することができ

SELECT 
... 
... 
FROM 
    (
    SELECT 
     {[Staff].[Group].[Practice Group].&[04],[Staff].[Group].[Practice Group].&[06]} ON 0 
    FROM [YourCube] 
); 
+0

おかげで、これは可能性があり、それは確かに私が見た振る舞いに合うでしょう。アプローチの面では、より良い選択肢がありますか?メインクエリのキューブスペースを事実上制限するサブセット内にセットを作成できますか? – John

+0

サブ選択は、フィルタリングする別の方法です。サブ選択はまた、彼らに何らかの異常な振る舞いをもたらす。あなたがすることができないことは、with句でメンバーを作成し、それをサブセレクトで使用することです...私はそれが直感的であると思いますが。 – whytheq