Measure1任意のディメンションによる合計との比較のシェアを示す計算されたメジャーを作成する必要があります。私はなんとかこのようにそれをすることができました:
CREATE MEMBER CURRENTCUBE.[Measures].[Test] AS
[Measures].[Measure1] / ( AXIS( 1 ).ITEM( 0 ).DIMENSION.LEVELS( 0 ).ITEM( 0 ), [Measures].[Measure1] )
ただし、の一般的な性質により[Test]、このメジャーでディメンションを注文することはできません。
SELECT [Measures].[Measure1] ON 0,
ORDER( [Dimension1].MEMBERS, [Measures].[Test] ) ON 1
FROM [MyCube]
上記のコードを実行すると、次のエラーが発生します。
無限再帰が検出されました。依存関係のループは次のとおりです。テスト->テスト。
これはかなり論理的です—を取得するAXIS( 1 ).ITEM( 0 )には、軸1にディメンションメンバーのセットが必要ですが、メンバーが。で並べ替えられるまで、このセットを取得することはできません[Test]。
一方、[Test]あるディメンションに固有のものとして定義すると、期待どおりに機能します。
CREATE MEMBER CURRENTCUBE.[Measures].[Test] AS
[Measures].[Measure1] / ( [Dimension1].[All], [Measures].[Measure1] )
[Dimension1].[All]軸1がそのメンバーセットを最初に評価する必要なしに、特定のメンバーをアドレス指定するため、これは機能します。
この計算された測定値を一般的にする方法はありますか?たぶん、別の方法で現在のディメンションの[All]メンバーを取得することは可能ですか?