2017-08-28 194 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報告的結果集,它基本上是用戶選擇的帳戶層次結構中產品維度中所有級別的金額

現在,我想從此集中排除第二級帳戶層次結構中的金額特定名稱「排除」。 我已經成功地添加使用交叉連接此過濾器和除 - 基於帳戶節點的唯一名稱:

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

但我要明確基礎上,顯示的名稱過濾掉,刪除大量其中:

[AccountH].CURRENTMEMBER.MEMBER_CAPTION = "Exclude" 

如何根據層次結構節點的名稱篩選出來?

+0

你嘗試過濾功能嗎? – whytheq

+0

是的,它同樣的問題,似乎我不能指定節點的名稱,當我做的節點不被刪除 –

回答

0

WHERE子句必須足夠:

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

AccountH是一個層次結構,我不能通過使用其可見名稱獲得「排除」成員作爲我明白 –

+0

爲什麼不呢?請從[型號] –

+0

中選擇{[AccountH]。[AccountH] .Members - [AccountH]。[AccountH]。[Exclude]} 0。[AccountH]。[Exclude] works,I get a這個名字的成員。然而,刪除成員不起作用,我已經嘗試了你的版本和。[Lvl2]規範... –

0

我已經想通了一些幫助,「排除」帳戶節點不在層次結構獨特,甚至在同一水平(我level2的) ,因此使用EXCEPT()刪除它們不起作用。 但是,這是有效的:

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

因爲它檢查名稱。但顯然過濾功能是一個緩慢的一個,所以我去交叉加入帳戶*產品,然後刪除SSRS報告中的「排除」帳戶