2012-08-13 78 views
1

此元組得到尺寸爲[MyHierarchy].[MyHierarchy].&[some_value]的度量X的集合。MDX;獲得除了名稱之外的所有值的度量集合度量

([Measures].[X], [MyHierarchy].[MyHierarchy].&[some_value]) 

但什麼是補體 - 即Measures.X在同一層次,但不包括[MyHierarchy].[MyHierarchy].&[some_value]

我敢肯定它的EXCEPT功能,但我似乎無法得到正確的語法。

回答

2

的總體思路,以任何一種集聚集了是一樣的東西:

with member [Measures].[Y] as 
     aggregate( 
     except([hierarchy].members, { excluded }), 
     [Measures].[X]) 
     ) 

骨料()正在處理[措施]的任何實際的聚合。問題是,如果[層次結構] .members包含一些中間(父)成員,則會計算兩次值。

如果聚集SUM和你已經一個所有成員,則給出預期的結果如下:

with member [Measures].[Y] as 
     ([hierarchy].[all], [Measures].[X]) 
     - sum({ excluded }, [Measures].[X]) 

如果沒有所有那麼你可以使用第一級成員:

with member [Measures].[Y] as 
     sum([hierarchy].levels(0), [Measures].[X]) 
     - sum({ excluded }, [Measures].[X]) 

_

+0

尼斯 - 所以基本上做我的自我鈣 - 所有 - 不需要?感謝您的詳細解釋。我不知道LEVELS(0)。 – 2012-08-13 03:40:54

1

以下expresion可與非線性aggrega重刑功能:

WITH MEMBER [Measures].[Y] as 
     Aggregate( 
     Except([MyHierarchy].[MyHierarchy].&[some_value].Level.Members, { [MyHierarchy].[MyHierarchy].&[some_value] }), 
     [Measures].[X]) 
     ) 

你可以概括它時,你必須排除一些成員屬於同一級別(排除的成員都在excludedMembers集):

WITH MEMBER [Measures].[Y] as 
     Aggregate( 
     Except(excludedMembers.Item(0).Level.Members , excludedMembers), 
     [Measures].[X]) 
     )