Measures jenseits von Sum, Min und Max selbst erstellen

    Kennzahlen Do it Yourself

    Measures sind vermutlich die beste Erfindung von Power Pivot. Als Aggregationen kennen Sie vermutlich schon die Summe, die Anzahl, Min, Max und die Anzahl eindeutiger Werte, wenn Sie eine Pivot-Tabelle anlegen. Jetzt brauchen Sie aber eine etwas komplexer berechnete Zahl. Dafür gibt es Measures.

    Mit berechneten Spalten konnten wir bereits einfach Berechnungen auf Zeilenebene durchgeführt werden. Dabei konnten wir uns nur auf Werte der aktuellen Zeile beziehen (beispielsweise Feld1+Feld2). Möchten wir die Summe einer Datenmenge berechnen, funktioniert dies auf Zeilenebene schon nicht mehr.

    Summe des Umsatzes – geht auch mit Measures

    Wir möchten die Summe des Umsatzes pro Verkäufer berechnen – Basis ist die SalesOrderHeader Tabelle der AdventureWorks-Datenbank von Microsoft.

    SalesOrderHeader

    Das Measure kann an zwei verschiedenen Stellen definiert werden, direkt im Power Pivot Fenster oder in der Power Pivot Feldliste:

    Measure im Berechnungsbereich

    Measure in der Power Pivot Feldliste

    Die Syntax für die Definition eines Measures ist

    MEASURE-NAME:=FORMEL

    In unserem Fall also:

    SumOfSubTotal:=SUM(Tabelle[SubTotal])

    Fügen wir mit den vorhandenen Daten eine Pivot-Table ein mit dem neuen Measure als Fakt und der VerkäuferID als Dimension erhalten wir:

    Measure in der Pivot Tabelle

    Hier wird deutlich, wie Measures arbeiten: Measures sind Regeln, die jeweils auf Basis der aktiven Filter berechnet werden. Im obigen Beispiel wird die Summe jeweils pro SalesOrderID berechnet. Würde eine weitere Dimension aufgenommen werden, wird diese beim Measure automatisch berücksichtigt. Measures werden auch nur als Regel gespeichert, das heißt die Ergebnisse werden immer OnTheFly berechnet und belegen damit keinen Speicherplatz.

    Wozu Measures?

    Das obige Beispiel lässt sich natürlich mit Bordmitteln lösen, indem man einfach die Spalte SubTotal als Summe aggregieren lässt. Für Measures gibt es viele Gründe:

    Struktur

    Measures können aufeinander verweisen. So kann ein Measure eine Erweiterung eines anderen sein. Beispielsweise haben wir drei Measures definiert:

    [Nebenkosten]:=SUM(Tabelle[Freight]) + SUM(Tabelle[TaxAmt])

    oder

    NKVerhaeltnisNetto:=[Nebenkosten] / SUM(Tabelle[SubTotal])

    oder

    NKVerhaeltnisBrutto:=[Nebenkosten] / SUM(Tabelle[TotalDue])

    Wird nun entschieden, dass die Steuer aus den Nebenkosten herausgerechnet werden muss, muss nur ein Measure verändert werden.

    Berechnungen

    Für die Jahresplanung möchte man den Umsatz mit einer 10% Steigerung darstellen. Das funktioniert mit Bordmitteln nicht mehr. Das Measure wäre dann wie folgt definiert:

    UmsatzPrognose := SUM(Tabelle[SubTotal]) * 1.1

    Komplexe Berechnungen

    Vorperiodenvergleiche sind mit Measures kein Problem mehr. Mit der komplexen CALCULATE-Funktion können Summen anderer Zahlen als im gegeben Filter berechnet werden – beispielsweise eben in der Vorperiode:

    UmsatzVorjahr:=CALCULATE(SUM(SalesOrderHeader[SubTotal]); All(Calendar); DateAdd(Calendar[DateKey];-1;YEAR))

    Verwirrt?

    Das macht nichts. Dieser Artikel sollte Ihnen nur einen Einblick geben, dass es so etwas gibt. Wir schreiben noch ein paar Artikel zu Measures und der konkreten Verwendung.

    Kategorien: Grundlagen, Power Pivot
    Holger Gubbels

    Holger Gubbels ist Spezialist für alles, was mit Business Intelligence zu tun hat. Der Diplom-Informatiker strukturiert und löst als Data Scientist und Berater der mogular GmbH tagtäglich komplexe Problemstellungen rund um die Datenanalyse. Als Dozent der Hochschule für Technik Stuttgart ist er ein ausgewiesener Experte seines Fachs und gewohnt, Inhalte einfach zu erläutern. Genau das macht er auch hier in seinen Beiträgen für das PowerPivotInsights Blog. Zusätzlich ist er Autor für die Computerwoche und den Springer-Verlag. Sie erreichen ihn unter hg@mogular.com

    Antwort schreiben

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.