none
SSAS Berechnung mit Distinct? RRS feed

  • Frage

  • Hallo,

    Ich habe einen SSAS Projekt (SQL Server 2008R2)

    Tabelle in Warehouse Datenbank

    Zeile	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




    Donnerstag, 20. Februar 2014 16:07

Alle Antworten

  • 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

    Montag, 24. Februar 2014 09:04
  • ...

    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

    Montag, 24. Februar 2014 09:37
  • 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

    Montag, 24. Februar 2014 12:20
  • 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

    Montag, 24. Februar 2014 13:01
  • ...

    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!

    Montag, 24. Februar 2014 13:51
  • 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


    Montag, 24. Februar 2014 14:15
  • 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

    Montag, 24. Februar 2014 16:27
  • 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

    Montag, 3. März 2014 08:48