2016-03-31 6 views
0

Ich versuche, die folgende SQL-Anweisung in MDX zu replizieren, so dass ich ein berechnetes Element im Cube mithilfe der Basis geladene Mitglieder erstellen kann, anstatt es außerhalb der berechnen müssen in der Tabelle Würfel und dannErstellen Sie ein berechnetes Member zum Entfernen müssen vorberechnete Maßnahme geladen werden

SUM(CASE WHEN ((A.SALES_TYPE_CD = 1) AND (A.REG_SALES=0)) 
    THEN A.WIN_SALES 
    ELSE 0 
END) AS Z_SALES 

lade ich zur Zeit SALES_TYPE_CD als Dimension und REG_SALES und WIN_SALES als Maßnahmen bin Laden.
Ich habe auch ein paar andere Dimensionen im Würfel aber die Einfachheit halber kann nur sagen, ich habe 2 andere Dimensionen, LOCATION und ITEM
Die Dimension hat LOCATION 3 Ebene hat, "Region"->"District"->"Store", von oben nach unten Ebene angeordnet.
Die Dimension hat ITEM hat 3 Ebenen, "CLASS"->"SUBCLASS"->"SKU", von oben nach unten bestellt. Die Dimension hat SALES TYPE hat 2 Ebenen, "SALES_TYPE_GROUP"->"SALES_TYPE_CD", von oben nach unten bestellt. Ich weiß, dass ich im Würfel, der die Dimension "SALES_TYPE" mit einer anderen Dimension verbindet, kein einfaches berechnetes Element erstellen kann, um die gewünschte Antwort zu erhalten. Ich würde denken, dass es eine kompliziertere MDX-Anweisung so etwas wie sein würde:

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 ; 

Aber dies scheint nicht das gewünschte Ergebnis zurückzukehren. Was wäre der richtige MDX-Code, um das gewünschte Ergebnis zu erzielen?

+0

Was stimmt nicht mit dem Ergebnis Ihrer aktuellen Abfrage? –

+1

Der REG_SALES = 0-Filter muss in der Faktoreihenfolge richtig ausgewertet werden (anstatt für einen Monat eine Produktsumme zu aggregieren und dann zu prüfen, ob die Zwischensumme 0 ist)? Wenn Sie in diesem Fall REG_SALES zu einer degenerierten Dimension machen, können Sie dies in MDX effizient tun. Ist das eine Möglichkeit? – GregGalloway

+0

Ja, ich wollte sagen, ich weiß, dass es die Funktion FILTER() gibt, aber Sie werden Ihr Leben viel einfacher gestalten, wenn Sie eine Dimension in Reg_Sales hinzufügen. –

Antwort

0

Ich habe eine Reihe von Tests mit den Daten durchgeführt und ich weiß jetzt, dass es keine Möglichkeit gibt, die richtige Antwort zu finden, indem ich MDX alleine in diesem Szenario verwende. Wie "Greg" und "Tab" vorgeschlagen, wäre der einzige Weg, Reg-Verkäufe als eine Dimension zu haben. Da dies ein Maß ist, kommt das wegen der großen Anzahl von Möglichkeiten für den Wert, der einen Datentyp von Dezimal (18,2) hat, nicht in Frage. Danke, dass Sie sich die Zeit genommen haben, die Frage zu beantworten.