2017-08-28 8 views
0

におけるディメンション階層の特定のメンバーをフィルタリング:私はMDXにかなり新しいですし、私は私の製品ディメンションの完全な階層としてだけでなく対策を返す基本的なMDXクエリを書かれているMDXクエリ

SELECT {[Measures].[Amount]} on 0, 
{ 
DESCENDANTS([ProductH].[ProductH], [ProductH].[ProductH].[Lvl4], LEAVES) 
} 
ON 1 
FROM 
(
    SELECT 
    {StrToSet('[AccountH].[AccountH].[Lvl1].&[TST17:0]',CONSTRAINED)} ON COLUMNS 
    FROM 
    (
    SELECT 
     {StrToSet('[ProductH].[ProductH].[All]',CONSTRAINED)} ON COLUMNS 
    FROM [Model] 
) 
) 

これにより、SSRSレポートの結果セットが返されます。これは、基本的に、ユーザーが選択したアカウント階層の製品ディメンションのすべてのレベルの金額です。

ここで、2番目のレベルのアカウント階層の金額を特定の名前は「除外」です。 私はと以外CROSSJOINを使用してこのフィルタを追加するために管理してきました - アカウントのノードの一意の名前に基づいて:

[AccountH].[AccountH].[Lvl2].&[TST17:0]&[TST17:1000] 

が、私は、表示される名前に基づいてフィルタリングする金額を削除するために特別たい場所:

[AccountH].CURRENTMEMBER.MEMBER_CAPTION = "Exclude" 

階層ノードの名前に基づいてフィルタリングするにはどうすればよいですか?

select 
... 
from [Model] 
where ({[AccountH].[AccountH].Members - [AccountH].[AccountH].[Exclude]}) 
+0

フィルター機能を試しましたか? – whytheq

+0

はい、両方とも同じ問題ですが、ノードが削除されていないときにノードの名前を指定できないようです –

答えて

0

ザ・、EXCEPT()を使用してapperently削除することはできません。 しかし、これは動作します:

Filter([AccountH].[AccountH].[Lvl2]].Members 
     ,[AccountH].[AccountH].CURRENTMEMBER.MEMBER_CAPTION <> "Exclude") 

名前を確認しているので。しかし、apperentlyフィルタ機能が遅いですので、私はクロスアカウント*製品に参加し、SSRSレポートの "Exclude"アカウントを削除します

+0

AccountHは階層です。表示名を「除外」メンバーとして取得することはできません。私は理解する –

+0

どうしてですか? [ModelH]。[AccountH]。[AccountH]。[AccountH]。[Exclude]}を[Model] –

+0

から選択し、[AccountH]。[Exclude]を選択すると、その名前のメンバー。しかし、メンバーの削除は機能しません、私はあなたのバージョンと。[Lvl2]仕様の両方を試しました... –

0

私も同じレベル(私にとってはレベル2)に、アカウントのノードが階層に固有のものではない「除外」、いくつかの助けを借りて、それを考え出した:句が十分でなければならない

関連する問題