Benutzer mit den meisten Antworten
SSAS: Eigene Aggregations-Funktion per MDX

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:
Ein Ausschnitt der Fakten Tabelle sieht etwas so aus
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
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
Alle Antworten
-
Hallo S.Elben,
gibt es einen Grund warum nicht gleich 12/6 = (4+2+6)/(2+1+3) = 2?
Grüße,
Stefan Kleinewillinghoefer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwicklern“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden koennen.
-
Hallo
Danke für den Tipp, da habe ich wohl um zu viele Ecken gedacht.
Jedoch bekomme ich mit der Rechnung das gleiche, nichts aussagende Ergebnis "1,#INF" heraus.
Mein MDX Ausdruck sieht so aus:
SUM([Measures].[Menge]) / SUM([Produkt].[Anzahl])
oder aber
[Measures].[Menge] / [Produkt].[Anzahl]
Bei beiden kein Ergebnis.
Was mache ich Falsch?
-
... 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