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?
Was stimmt nicht mit dem Ergebnis Ihrer aktuellen Abfrage? –
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
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. –