1

このタプルは、の次元のメジャーXの集合を取得します[MyHierarchy].[MyHierarchy].&[some_value]

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

しかし、補集合は何ですか-つまり、同じ階層内にあるが除外するMeasures.X [MyHierarchy].[MyHierarchy].&[some_value]

EXCEPT関数だと思いますが、構文が正しくないようです。

4

2 に答える 2

2

あらゆる種類のセットを集約する一般的な考え方は、次のようなものです。

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

Aggregate()は、[メジャー]の実際の集計を処理します。問題は、[hierarchy] .membersにいくつかの中間(親)メンバーが含まれている場合、値が2回カウントされることです。

集計が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] )

_

于 2012-08-13T03:35:15.637 に答える
1

次の式は、非線形集計関数で機能します。

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] )
       )
于 2012-08-13T06:25:43.353 に答える