次のSQLステートメントをMDXにレプリケートしようとしているため、キューブに計算されたメンバーを作成できます表中のキューブ、その後計算されたメンバーを作成して、計算済みのメジャーをロードする必要がなくなった場合
SUM(CASE WHEN ((A.SALES_TYPE_CD = 1) AND (A.REG_SALES=0))
THEN A.WIN_SALES
ELSE 0
END) AS Z_SALES
私は現在の寸法とREG_SALES
と対策などWIN_SALES
としてSALES_TYPE_CD
をロードしています、それをロードします。
私はまた、キューブ内の他のいくつかの寸法を持っていますが、簡単にするため、LOCATION
とITEM
寸法はLOCATION
は、上から下のレベルに命じ、3つのレベル、"Region"->"District"->"Store"
を持っている、私は2つの他の寸法を持っているだけで言うことができます。
次元はITEM
で、上から下の3つのレベル、"CLASS"->"SUBCLASS"->"SKU"
があります。 ディメンションのSALES TYPE
には、2つのレベル、"SALES_TYPE_GROUP"->"SALES_TYPE_CD"
があり、上から下の順に並べられています。 "SALES_TYPE"ディメンションと別のディメンションをクロスジョインするキューブ内に単純な計算メンバーを作成することはできません。 は、私はそれはのような、より複雑なMDXステートメントのものになるだろうと思うだろう:
CREATE MEMBER CURRENTCUBE.[Measures].[Z_Sales]
AS 'sum(filter(crossjoin(leaves(), [Sales Type].[Sales Type].
[Sales_Type_CD].&[1]), [Measures].[REG_SALES]=0),[Measures].
[WIN_SALES])',
FORMAT_STRING = '#,#',
VISIBLE = 1 ;
しかし、これは、所望の結果を返すようには見えません。 目的の結果を生成するための適切なMDXコードは何でしょうか?
現在のクエリが返す結果に何が問題になっていますか? –
REG_SALES = 0フィルタは、ファクト行のグレイン・ライトで評価する必要があります(1か月分の製品小計まで集計し、小計が0かどうかを確認するのではなく)か?その場合、REG_SALESを縮退ディメンションにすると、これをMDXで効率的に行うことができます。それは可能でしょうか? – GregGalloway
ええ、私は、FILTER()関数があることを知っていると思いますが、Reg_Salesにディメンションを追加すると、あなたの人生が楽になります。 –