2016-03-31 8 views
0

次の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をロードしています、それをロードします。
私はまた、キューブ内の他のいくつかの寸法を持っていますが、簡単にするため、LOCATIONITEM
寸法は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コードは何でしょうか?

+0

現在のクエリが返す結果に何が問題になっていますか? –

+1

REG_SALES = 0フィルタは、ファクト行のグレイン・ライトで評価する必要があります(1か月分の製品小計まで集計し、小計が0かどうかを確認するのではなく)か?その場合、REG_SALESを縮退ディメンションにすると、これをMDXで効率的に行うことができます。それは可能でしょうか? – GregGalloway

+0

ええ、私は、FILTER()関数があることを知っていると思いますが、Reg_Salesにディメンションを追加すると、あなたの人生が楽になります。 –

答えて

0

私はこのデータで一連のテストを行いましたが、このシナリオではMDXを単独で使用して正しい答えを得る方法がないことがわかりました。 「Greg」や「Tab」のように、唯一の方法は販売を次元として行うことです。これは尺度であるため、データ型が小数点(18,2)の値の可能性が非常に高いため、これは疑問です。 質問に答える時間をとってくれてありがとう。

関連する問題