none
SSAS: Eigene Aggregations-Funktion per MDX RRS feed

  • Frage

  • Hallo Zusammen,

    soweit ich weiß, sind die Aggregationsfunktionen im SSAS (2008 R2) sehr eingeschränkt, gerade mit der Standard Lizenz. 

    Nun möchte ich eine eigene Funktion zur Aggregation für ein bestimmtes Dimensionsattribut definieren. Leider kenne ich mich mit MDX nur sehr oberflächlich aus.

    Folgende Situation besteht:

    meine Produktdimension sieht so aus:

    DimProdukt

    Ein Ausschnitt der Fakten Tabelle sieht etwas so aus

    FacVerkauf


    Im AS habe ich nun die Dimensionshierarchie Bündel (Bündel -> mit allen unterliegenden Produkten) und die Menge regulär auf SUM gestellt.

    Schaut man sich die Hierarchie in Kombination mit der Menge an so werden auf der unteren Produktebene ganz normal die Menge der verkauften Produkte gelistet. Auf der oberen Bündelebene logischerweise die Summe aller Mengen der unterliegenden, verkauften Produkte.

    Was ich nun erreichen will, ist dass auf Bündelebene nicht die summierte Anzahl der Produkte, sondern die Anzahl eines gesamten Bündels angezeigt wird.

    Am liebsten würde ich hierfür die alte Measur "Menge" verwenden und in dem Spezialfall Bündel mit der Rechnung [Measures].[Menge] / [Produkt].[AnzahlImBündel] ersetzten. 

    Im Beispiel von oben bedeutet das: bei B1 steht eine Menge von 12 (4+2+6). Später sollte aber eine Menge von 2 (4/2 oder 2/1 oder 6/3) angezeigt werden.

    Aber ich nehme nicht an, dass so etwas möglich ist. Liege ich hier richtig?

    Eine extra Measur "Menge - Bündel" ist eine nicht ganz so schöne Alternative mit der ich aber gut leben könnte. Leider bekomme ich die Rechnung hierfür nicht hin.

    Gedacht habe ich mir das so:

    Je Zeile in FactVerkauf soll die Verkaufsmenge durch die AnzahlImBündel dividiert werden. Da es mehrer Produkten in einem Bündel gibt, wird die Rechnung mehr mals ausgeführt. Jetzt sollte der AS nur den Wert der ersten, errechneten Zeile verwenden oder aber den Durchschnitt aller unterliegenden Zeilen (der errechnete Wert wird immer der gleiche sein).

    Kann man so eine Rechnung per MDX umsetzten?

    Mein bisheriger MDX-Ansatz funktioniert leider nicht

    CREATE MEMBER CURRENTCUBE.[Measures].[Menge - Buendel]
     AS SUM([Measures].[Menge].Item(0) / 
            [Produkt].[Anzahl].[Anzahl].Item(0))

    Was mach ich falsch?





    • Bearbeitet S. Elben Montag, 25. März 2013 08:56
    Freitag, 22. März 2013 11:52

Antworten

  • ... ich habe das Problem gelöst, und zwar durch das einfügen eines Dummy Produkts, welches als Menge die Differenz aus der Anzahl verkaufter Bündel und der Gesamtmenge der beinhalteten Produkten eines Bündels enthält.

    Dafür musste natürlich der ETL-Prozess umgeschrieben werden.

    Schade das hier keiner etwas zu der MDX-Lösung sagen konnte

    • Als Antwort markiert S. Elben Freitag, 5. April 2013 09:44
    Freitag, 5. April 2013 09:44

Alle Antworten