2

AGGREGATE したいタプルセットがあります。

例: 次のクエリがあります。

Select {[Sales Territory].[Sales Territory].DEFAULTMEMBER.children} on 0,
{[Sales Reason].[Sales Reason Type].DEFAULTMEMBER.children} on 1 
From [Adventure Works]

軸の 1 つにTOTALを追加する場合は、次のようにします。

WITH MEMBER [Sales Territory].[Sales Territory].[Total X] as 'AGGREGATE(AXIS(0))' 
Select {[Sales Territory].[Sales Territory].[Total X],[Sales Territory].[Sales Territory].DEFAULTMEMBER.children} on 0
,{[Sales Reason].[Sales Reason Type].DEFAULTMEMBER.children} on 1 From [Adventure Works]

今のところ、それはすべて良いです。しかし、クロス結合セットを集約しようとすると失敗します。例として、次のクエリを取り上げてください。

Select {[Sales Territory].[Sales Territory].DEFAULTMEMBER.children} on 0
,{[Sales Reason].[Sales Reason Type].DEFAULTMEMBER.children}*{[Sales Channel].[Sales Channel].DEFAULTMEMBER.children} on 1 
From [Adventure Works]

[Sales Reason].[Sales Reason Type] を [Sales Channel].[Sales Channel] にクロス結合したことに注意してください。

複数のメンバーがいる場合、軸上で合計を行う方法はありますか?

ありがとう!

PS: 私は MDX クエリの初心者です

4

1 に答える 1

0

必要以上に複雑なことをしています。2 番目のクエリは次のように簡略化する必要があります。

Select [Sales Territory].[Sales Territory].Members on 0,
       [Sales Reason].[Sales Reason Type].DEFAULTMEMBER.children on 1
  From [Adventure Works]

Allメンバーは、MDX の (ほぼ) すべての階層のメンバーであることに注意してください。したがって、All3 番目のクエリのメンバーを含めるには、次のいずれかを記述できます。

Select {[Sales Territory].[Sales Territory].Members}
       on 0,
       {[Sales Reason].[Sales Reason Type].Members}
       *
       {[Sales Channel].[Sales Channel].Members}
       on 1 
  From [Adventure Works]

または、階層の 1 つからの合計と他の階層の他のメンバーの合計を組み合わせずに、軸の合計のみを取得したい場合は、2 つのセットを結合します。他の 2 つの階層を交差結合します。私はUnionここの短い形式を使用しています - これは+セットの演算子です:

Select {[Sales Territory].[Sales Territory].Members}
       on 0,
       { ([Sales Reason].[Sales Reason Type].All, [Sales Channel].[Sales Channel].All) }
       +
       (
          {[Sales Reason].[Sales Reason Type].[Sales Reason Type].Members}
          *
          {[Sales Channel].[Sales Channel].[Sales Reason Type].Members}
       )
       on 1 
  From [Adventure Works]
于 2013-09-03T17:01:29.497 に答える