2011-08-08 8 views
0

現在の行に基づいてメジャーを計算したいと思います。 問題:WITH MEMBER部分で現在の行を取得する方法が見つかりません。WITH MEMBERの計算で現在の行の値を取得する方法MDX?

WITH MEMBER [Measures].[Test] AS AVG(
    NonEmptyCrossJoin(
       FILTER(DESCENDANTS([Exigences].[ENVGR], [Levier], SELF), 
         [Exigences].CurrentMember.Name = 'Chemicals'), 
       DESCENDANTS([Organization].[Valeo].[Powertrain Systems], [entity], SELF)), 
    [Measures].[ProgressLevel]) 

SELECT {[Measures].[ProgressLevel], [Measures].[Test]} ON COLUMNS, 
DESCENDANTS([Exigences].[ENVGR].[ENVGR-01.001], [Levier], SELF) ON 
ROWS FROM [Exigences] 

化学物質は現在ハードコードされています。これは例です。 私は現在の行の値を持つために 'Chemicals'の代わりにしたいと思います。

これは、行が 'Chemicals'、 'Pharmacy'、 'Test'を返す値であるとします。[Measures]。[Test]計算を変更したいと思います。

MDXでできますか?もしそうなら、現在の値をどのように得ることができますか?

[Levier]。CurrentMember.Nameを試しましたが、[Exigences] .CurrentMember.Nameと競合していると思います。

いずれかのアイデアがありますか?

これは努力のビットを取ってきたが、それはいい金バッジを持っている利点だ、

+0

理解することがわからない:これはあなたのプロバイダのための仕事に行くされていますが、このいずれかを試すことができます

わかりません現在の行ではどういう意味ですか?基礎となるテーブルの行?はいの場合はどちらですか? (rowidを取得するのはあまりOLAPではありません:-)) – ic3

+0

ON ROWSを選択すると、私は[Levier]のメンバーのセットを返すDESCENDANTSをやっています。上のWITH MEMBERで、 'Chemicals'文字列がハードコードされていることがわかります。この文字列を私の[Levier] .CurrentMember.Name値にしたいと思います。しかし、[Exigences] .CurrentMember.Nameと[Levier] .CurrentMember.Nameの間の平等テストは、常に[true]になります。したがって、フィルタは何もフィルタリングしません。 – Spredzy

+0

私はあなたの問題、トリッキーなものを参照してください。 icCube OLAPサーバーは、問題を解決する関数言語をサポートしています。申し訳ありませんが、私はあなたの問題を解決する方法をAxis()または重複した階層を使用して何かをしない限り表示されません。この標準MDX su..sの変数uffを作成する必要があります。 – ic3

答えて

2

、ありがとうございました。私たちは(linkでmyCellSet &実施例2d)をMDX Generate機能を使用してセットを命名している:

WITH MEMBER [Measures].[Test] AS AVG(
NonEmptyCrossJoin(
      Generate({[Exigences].CurrentMember} as MyCellSet, 
       FILTER(DESCENDANTS([Exigences].[ENVGR], [Levier], SELF), 
        [Exigences].CurrentMember.Name = MyCellSet.CurrentMember.Name) 
      ) 
      , 
      DESCENDANTS([Organization].[Valeo].[Powertrain Systems], [entity], SELF)), 
[Measures].[ProgressLevel]) 
+0

助けてくれてありがとう。私はGenerateがなぜ、なぜここでそれを使用するのか理解していますが、AS MyCellSetはGenerateを使用する標準的な方法です。私はどこでも医者を見つけることができません。そして、これはこれを実装しようとしているときに動作していないものです。オフトピック:「素晴らしい金のバッジを持つ」とはどういう意味ですか? – Spredzy

+0

928ポイントはあなたが他人を助けてくれたことを意味しますので、私たちも同じことをやっています – ic3

+0

ahhaありがとう。私はDimensionを複製することでそれを行うことができたばかりです。私はこの解決策が好きではありませんが、それは私により良いものを見つけるためにいくつかの自由な時間を得るでしょう。 Generate関数についてもう少し詳しく調べてみましょう。 icCubeで助けてくれてありがとう。とても有難い。 – Spredzy

関連する問題