あらゆる種類のセットを集約する一般的な考え方は、次のようなものです。
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] )
_