ディメンション D とメジャー M の間に多対多の関係があります。
次の式を持つ一般的な計算メジャーを作成する必要があります: M/Σ(M)。ここで、Σ は、特定のディメンションの少なくとも 1 つのメンバーに関連付けられているすべてのメジャーのファクトの合計を表します。
他の (1 対多の) ディメンションは簡単ですが、多対多で Σ を取得するのは簡単です... 通常の MDX クエリであれば、それも簡単です。ディメンションのすべての子をスライスするだけです。
SELECT [Measures].[M] ON 0
FROM [MyCube]
WHERE [D].[All].CHILDREN
しかし、計算されたメジャーをスライスするにはどうすればよいでしょうか?
私が期待する動作の簡単な例:
CREATE MEMBER [Measures].[Calc] AS
[Measures].[M] / ( DRILLUPLEVEL( AXIS( 1 ).ITEM( 0 ).HIERARCHY.MEMBERS ).ITEM( 0 ), [Measures].[M] )
WHERE DRILLUPLEVEL( AXIS( 1 ).ITEM( 0 ).HIERARCHY.MEMBERS ).ITEM( 0 ).CHILDREN
しかしもちろん、MDX は定義内のWHERE
句をサポートしていません。MEMBER
これにアプローチする方法を教えてください。