In Pyramid Analytics Berechnungen richtig Anwenden

Überblick

Die Pyramid Decision Intelligence Plattform vereint Data Preparation, Business Analytics und Data Science in einer einzigen Data & Analytics Umgebung. Als Partner von Pyramid Analytics möchten wir gerade neuen Anwendern Tipps und Tricks vorstellen, um den Start mit dieser Plattform so einfach wie möglich zu gestalten.

Vielen wird bereits aufgefallen sein, dass die scheinbar selbe Berechnung unterschiedliche Ergebnisse erzeugen kann. Doch warum ist das so, und welches Ergebnis ist das Richtige? Was ist der Unterschied zwischen Row-Level Calculation und Aggregationen? Und wie werden diese in Pyramid Analytics umgesetzt?

In diesem Beitrag werden zunächst die Begriffe erklärt und anschließend an einem Beispiel in Pyramid Analytics verdeutlicht.

Wann verwendet man Row-Level Calculation?

Row-Level Calculation ist eine zeilenbasierte Berechnung. Alle Berechnungen werden zunächst auf Zeilenebene durchgeführt und nachträglich, genau wie normale Felder, aggregiert. Die Berechnung wird also für jede Zeile in den Daten berechnet. Zusätzlich ist das Zusammenfügen (Zeilenberechnung) von Feldern performanter als das Zerlegen von Feldern.

In Pyramid Analytics wird eine Row-Level Calculation entweder im Modul „Model“ über „Calculated Columns“ erstellt oder im Modul „Formulate“. In Model wird hierbei eine neue Spalte für die Daten generiert und Zeile für Zeile das jeweilige Ergebnis berechnet. In Formulate wird ein Aggregation-Block zum Beispiel „Sum“ gewählt. Hierbei wird als Liste das Row-Level, zum Beispiel eine ID, und als Datenpunkt die gewünschte Berechnung ausgewählt.

Wann verwendet man Aggregate?

Aggregate sind spaltenbasierte Berechnungen. Die Werte werden erst aggregiert und die Berechnung wird anschließend auf dem aggregierten Ergebnis ausgeführt. Zu beachten ist, dass Aggregationen bei großen Datenmengen sehr zeitintensiv sein können. Aggregate dürfen nicht in Model, sondern sollen in Formulate oder in Discover erstellt werden. Einige Werte kann man nicht aufsummieren, z. B. die Gewinnspanne, da sie sonst ihre Aussagekraft verlieren.

Die Wahl der jeweiligen Berechnungsmethode kann den Unterschied zwischen sinnvollen und unbrauchbaren Ergebnissen machen.

Beispiele für Berechnungen:

Row-Level Calculation in Model:

Für eine Row-Level Calculation wird im Model SUM ([Measure A] *[Measure B]) Zeile für Zeile berechnet und anschließend aggregiert:

Row-Level in Formulate:

Dieselbe Berechnung sieht im Modul „Formulate“ etwas anders aus.

Es sind Zwei Schritte nötig:

Schritt 1: die gewünschte Berechnung erstellen und als „Formulate“ abspeichern in unserem Fall
Price*Quantity

Schritt 2: Es wird unter Aggregation Blocks „Sum“ ausgewählt, anschließend wird eine Liste, in unserem Fall TransactionsID, ausgewählt, um auf Zeilenbasis zu gelangen.

Für den Data Point kann nun die oben erstellte Berechnung ausgewählt werden. Individuell erstellte Measures sind unter dem Ordnersymbol „FX“ zu finden. Es öffnet sich unterhalb “My Content“ auf. Hier werden alle Formeln angezeigt, die auf das ausgewählte Modell basieren.

Aggregate:

Bei Aggregaten werden via Formulate beide Spalten einzeln zunächst aggregiert und im zweiten Schritt die Berechnung {SUM([Measure A])} *{[SUM([Measure B])} ausgeführt:

Diese Formel berechnet die Profitabilität {(SUM (Sales)) -(SUM(Expenses))} / (SUM(Sales)).

Man kann diese aber auch direkt in Discover berechnen:

Die oben genannte Formel kann auch über Discover einfach nachgebaut werden, indem man die beiden Measures auswählt und ein neues Measure berechnet.

Wenn Sales nicht als Row-Level berechnet wird, sondern zuerst aggregiert wird, kommen unbrauchbare Ergebnisse heraus. Hierbei würden alle Preise aufsummiert werden und anschließend mit der Anzahl multipliziert werden. Das Ergebnis wird somit verfälscht, da nicht zwischen günstigen und teureren Waren unterschieden wird.

In folgender Abbildung sieht man im grünen Kasten links das in „Model“ berechnete Ergebnis und auf der rechten Seite das in „Formulate“ Row-Level berechnete Ergebnis. Diese Ergebnisse ergeben dieselben Zahlen, dagegen das im roten Kasten aggregierte Ergebnis, hat andere Zahlen.

Wie man sehen kann, unterscheiden sich diese beiden Zahlen deutlich voneinander, weshalb man sich vorher genau überlegen muss, welche Berechnungsart die korrekte ist.

In Sales_Model und Sales_Formulate_Rowlevel (grüner Kasten) werden die einzelnen Transaktionen berechnet:
(Preis A* Anzahl A + Preis B *Anzahl B + Peis C * Anzahl C … )

In Sales_Formulate_Aggregate (roter Kasten) werden alle Transaktionen zusammengefasst:
(Preis A+ Preis B+ Preis C) * (Anzahl A + Anzahl B +Anzahl C)

Zur Verdeutlichung hier ein Ausschnitt aus den einzelnen Transaktionen für Bikes:
Die „Grand Total“ Zeile ist identisch zu den Daten von Bikes in dem vorherigen Screenshot, jedoch wurden dieses Mal die Daten in sehr kleiner Granularität angezeigt, sodass man nun den Unterschied deutlich sieht. Während sich nun die Spalten “Sales_Model” und Sales_Formulate_Aggregate” nur noch in der Total-Zeile unterscheiden, sind die Ergebnisse für “Sales_Formulate_Rowlevel” dazu verschieden.

Achtung: Auf Transaktionsebene kommen identische Zahlen raus, nur die Summen unterscheiden sich! Wenn dieselbe Ebene, welche zur Berechnung in Formulate genutzt wurde, im Grid verwendet wird, zeigt Sales_Formulate_Rowlevel nicht die gewünschte Ebene, sondern die Summe an. Dieses Verhalten, kann für gewisse Anwendungen gewünscht sein, jedoch sollte man über dieses Verhalten im Vorfeld sich im Klaren sein.

Daher ist es gegebenenfalls ratsam, seine Row-Level-Berechnungen in Model vorzunehmen.

Fazit

Die Wahl der jeweiligen Berechnungsmethode macht einen großen Unterschied in den Ergebnissen. Dies kann der Unterschied zwischen sinnvollen und unbrauchbaren Ergebnissen sein. Zeilenbasierte Berechnungen werden in Pyramid Analytics im „Model“ über „Calculated Columns“ umgesetzt, oder über Formulate über Aggregation Blocks. Aggregate werden dagegen über die Module „Formulate“ oder „Discover“ berechnet. Die Wahl der Berechnungen sollte genau überlegt werden, um dem jeweiligen Verwendungszweck gerecht zu werden und immer das richtige Ergebnis zu erhalten.
Row-Level Calculation wird verwendet, wenn die granulare Ebene für die Berechnung wichtig ist, wie bei der Berechnung des Umsatzes. Aggregate werden genutzt, um zum Beispiel Berechnungen mit Gesamtkosten zu berechnen.

Prodato verbindet.

Autorin

Debora Veh
Consultant

debora.veh@prodato.de