Fragensteller
SSAS Berechnung mit Distinct?

Frage
-
Hallo,
Ich habe einen SSAS Projekt (SQL Server 2008R2)
Tabelle in Warehouse DatenbankZeile Wert1 Wert2 Wert3 Wert4 1 10 1 1 1 2 20 1 2 2 3 30 2 3 3 4 10 1 1 4
Nun will ich in meinem Analyses Service Projekt in dem entsprechenden Cube im Register "Berechnungen" folgende Berechnung durchführen:
[Measures].[Wert1] / [Measures].[Wert2]
Beispiel:
Ergebnis=(10+20+30+10) /(1+1+2+1)=14
Ist es irgendwie möglich, dass ich für die Spalte "Wert3" eine Eindeutigkeit berücksichtigen kann?
Beispiel:
Ergebnis=(10+20+30) /(1+1+2)=15
Die Zeilen, welche in "Wert3" den gleichen Wert haben (Zeile 1 und Zeile 4), will ich nur einmal berücksichtigen. Ich benötige jedoch beide Zeilen, da ich in "Werte4" noch weitere Informationen zur Verfügung stelle.
Ich hoffe, ihr versteht mein Problem
Gruß
Thomas
- Bearbeitet Thomas1234567 Donnerstag, 20. Februar 2014 16:09
Alle Antworten
-
Hallo Thomas.
Schau Dir mal folgende Diskussion http://social.msdn.microsoft.com/Forums/en-US/34afa1e4-12f5-45a3-9720-e5df55d734fd/ssas-distinct-sum-calculation?forum=sqlanalysisservices an vielleicht wird es Dich weiterhelfen.
Gruss,
Ionut
Ionut Duma, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Hallo Ionut,
danke für den Link. Das behandelt genau mein Thema:-) Leider komme ich jedoch damit auch nicht richtig weiter. Ich vermute, ich wende die Formel nicht richtig an. (ich bin ein Neunling mit der SSAS und MDX Thematik)
Folgendes habe ich gemacht:
Measure: SummeWert1
Measure: AnzahlDatensaetze
MDX Formel:
Sum( [TabellenNameInWarehouseDB].[Wert3].[Wert3].MEMBERS,
[Measures].[SummeWert1] / [Measures].[AnzahlDatensaetze]
)In der Browser Ansicht erhalte ich jedoch nun in der Spalte für dieses berechnente Element keine Werte sondern den Fehler: "#Wert"
Was habe ich falsch gemacht?
Gruß
Thomas
-
...
Sum( [TabellenNameInWarehouseDB].[Wert3].[Wert3].MEMBERS,
...
[Measures].[SummeWert1] / [Measures].[AnzahlDatensaetze]
)"TabellenNameInWareHouseDB" ??
Ist es möglich, dass Du dort wirklich anstelle der Dimensions-Hierarchie den Namen einer Tabelle aufführst? Dann kann das natürlich nicht funktionieren ;)
Andreas Wolter (Blog | Twitter)
MCM - Microsoft Certified Master SQL Server 2008
MCSM - Microsoft Certified Solutions Master Data Platform, SQL Server 2012
www.andreas-wolter.com | www.SarpedonQualityLab.com- Als Antwort vorgeschlagen Ionut DumaModerator Donnerstag, 27. Februar 2014 16:22
-
Hallo Andreas,
vielen Dank für die Info. Das war genau das Problem. Jedoch habe ich noch eine Frage dazu:
Diese eine Tabelle "TabellenNameInWarehouseDB" hatte ich bisher als Faktentabelle definiert. Jetzt habe ich diese zusätzlich als Dimensionstabelle hinzugefügt.
Ist das notwendig, oder kann ich auch irgendwie auf Faktentabellen zugreifen? Ich meine mal irgendwo gelesen zu haben, dass es aus Performancegründen nicht gut ist, wenn Fakten=Dimensionstabelle ist?
Gruß
Thomas
-
Hallo Thomas,
ich bin nicht sicher, ob ich Dein Verständnisproblem jetzt "vollumfänglich" verstehe und vor allem mal eben so auflösen kann ich 2 Sätzchen:
Also zum einen kann in MDX natürlich auch auf die Measures der Faktentabelle zugegriffen werden. Aber auch das nicht über Tabellenname sondern über den Namen der MeasureGroup. Möglicherweise ist es das, was Du eigentlich benötigst.
Für ein Disctinct-Count Measure wird eine gesonderte Measure-Group empfohlen - aus Performancegründen.
Eine Measuregroup durch eine Dimension zu ersetzen erschließt sich mir gerade nicht. Auch wenn es natürlich Szenarien gibt, auf denen man "Fakten" als Dimensionsattribute verwendet. Aber das ist glaube ich nicht so die Frage.
ich hoffe, ich habe damit nicht noch mehr zur Verwirrung beigetragen.
Es gab mal ein sehr gutes Buch von MS Press zu MDX, eines der ersten überhaupt, welches ich Dir gern empfohlen hätte - leider finde ich es Ad Hoc nicht. Könnte "Strep by Step" oder "Fast Track" oder so ähnlich heissen. Auf jeden Fall von MS Press und schon älter. Fand ich damals 1A von der Vorgehensweise gerade für Anfänger.
Andreas Wolter (Blog | Twitter)
MCM - Microsoft Certified Master SQL Server 2008
MCSM - Microsoft Certified Solutions Master Data Platform, SQL Server 2012
www.andreas-wolter.com | www.SarpedonQualityLab.com -
...
Also zum einen kann in MDX natürlich auch auf die Measures der Faktentabelle zugegriffen werden. Aber auch das nicht über Tabellenname sondern über den Namen der MeasureGroup. Möglicherweise ist es das, was Du eigentlich benötigst.
Für ein Disctinct-Count Measure wird eine gesonderte Measure-Group empfohlen - aus Performancegründen.
...
Ich denke auch, dass wohl das von dir gemeinte, mein Problem ist.
Aber irgendwie klappt das nicht.
Meine MeasureGroup heißt so, wie meine Tabelle in der Warehouse Datenbank. (Register "Cubestruktur" bei den Cubes)
Darin habe ich meine Spalte "Wert3" als neues Measure hinzugefügt. (Was muss ich hier bei "Verwendung" eintragen? Ich habe 2 Tests gemacht. Einmal mit der Einstellung "Summe" und einmal mit "Keine Aggreagation")
Leider tut dann jedoch meine Formel nicht! (Wie geschrieben, als ich die Tabelle als Dimenstion hinzugefügt hatte, hat das ganze funktioniert)
Sum( [NameDerMeasureGroup].[Wert3].[Wert3].MEMBERS,
[Measures].[SummeWert1] / [Measures].[AnzahlDatensaetze]
)Thomas
PS: Ich denke, ein Einsteigerkurs wird auf jeden Fall sehr sinnvoll sein!
-
Hallo Thomas,
ach ja, das Problem mit der Eindeutigkeit.
Da ich darauf keine Ad-Hoc Antwort drauf habe, habe ich das umschifft. Mir fiel vorhin nur dieser seltsame Name ins Auge und habe deswegen da was zu gesagt.
Für ein Distinct Value, um es mal so zu nennen (als im Gegensatz zu DistinctCount) gibt es in dem Sinne keine Aggregation.
Du wirst da vermutlich schon mit Summe arbveiten wollen. Da etwas zu ändern hat großen Einfluss auf sämtliche Berechnungen in Deinem Cube. Das kann ich, ohne das Gesamtprojekt zu kennen, nicht überschauen.
Möglicherweise ist Dir mit der Distinct-Function geholfen, die es in MDX ja gibt. (technet.microsoft.com/de-de/library/ms146033.aspx)
Es ist auch durchaus möglich, das, wenn man das Konzept versteht, eine Hilfsdimension zum Einsatz kommen kann. Damit habe ich mich für so eine Berechnung noch nicht auseinandergesetzt, um das so sagen zu können.
Ein Grundlagenkurs in MDX ist definitiv zu empfehlen. Ich habe mir früher auch schon mehrere gegönnt - was mir sehr geholfen hat, vor allem die Zusammenhänge zu erfassen, denn MDX ist eigentlich "suuper logisch" :-) - und dann auch selber gegeben (mehr Eigenwerbung erlaube ich mir an dieser Stelle mal nicht).
Hin und wieder gibt es bei der PASS Deutschland e.V. noch ein "PASS Essential" zu MDX, was dann besonders günstig ist. (sqlpass.de/Events/PASSEssentials.aspx)
Andreas Wolter (Blog | Twitter)
MCM - Microsoft Certified Master SQL Server 2008
MCSM - Microsoft Certified Solutions Master Data Platform, SQL Server 2012
www.andreas-wolter.com | www.SarpedonQualityLab.com- Bearbeitet Andreas.WolterMicrosoft employee Montag, 24. Februar 2014 14:17 Typo
-
Hallo Andreas,
der Ansatz von "vorhin" war ja ganz gut, und ich denke auch, dass damit das Problem zu tun hat.
Ich habe jetzt auch keine Variante gefunden, wie ich auf die Faktentabelle zugreifen kann, sondern nur über den Umweg zusätzlich noch das ganze als Demension zu definieren.
Trotzdem auf jeden Fall schon einmal danke für die Infos.
Thomas
-
Hallo Thomas,
Wenn Dir die Antwort von Andreas geholfen hat, dann bitte markiere diese als Antwort.
Danke und Gruss,
Ionut
Ionut Duma, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Hi Ionut,
die Antwort von Andreas hat mir auf jeden Fall geholfen, jedoch ist mein Problem noch nicht gelöst. Ich kann immer noch nicht über die Faktentabelle auf die entsprechende Spalte zugreifen, sondern nur über den Umweg der Dimensionstabelle.
Ist die Antwort nun trotzdem zu markieren?
Thomas