Serie | Microsoft Power Platform – Ranking in Power BI mit Beispielen
Mit der Entwicklung der Datenvisualisierung stehen uns immer mehr und größere Daten zur Verfügung. Um die Daten effizient und intelligent zu nutzen, benötigen wir oft ein Ranking-System, um die Daten nach bestimmten Kriterien zu filtern und nur die sinnvollsten Einträge zu visualisieren. In Power BI kann das Ranking auf verschiedene Weisen erreicht werden. Für unsere Analyse werden wir eines der von Microsoft zur Verfügung gestellten kostenlosen Beispiele für Berichtsdaten verwenden, die auf GitHub verfügbar sind. Im Folgenden geben wir Ihnen eine Übersicht der einzelnen DAX-Funktionen und erläutern diese an Testdaten.
Einführung der DAX-Funktion RANKX (Theorie)
Die Power BI DAX-Funktion RANKX ist eine leistungsstarke Sortierfunktion. Die Funktion RANKX gibt die Rangfolge einer bestimmten Zahl in jeder Zeile einer Tabelle zurück, die Teil einer Liste von Zahlen ist. Die Funktion RANKX kann sowohl in berechneten Spalten als auch in Measures verwendet werden.
Aufgrund des Verhaltens des VertiPaq-Optimierers ist ein Measure normalerweise einer berechneten Spalte vorzuziehen. Erstens wird die Rangordnung “zur Laufzeit” berechnet, sobald sie von einer Seite verwendet wird. Eine berechnete Spalte muss jedes Mal, wenn die Daten aktualisiert werden, komplett neu geladen werden. Außerdem werden alle berechneten Spalten von VertiPaq nicht so stark optimiert wie andere Spalten.
Die folgende Syntax für die Funktion ist:
RANKX(<Tabelle>, <Ausdruck>, <Wert>, <Reihenfolge>, <Bindungen>)
<Tabelle>
Der Parameter erfordert eine Tabelle als Eingabe. Dies kann eine Standardtabelle sein, die Sie in Power BI importiert haben, oder eine berechnete Tabelle über eine DAX-Funktion.
Die Funktion RANKX durchläuft die Tabelle, um eine bestimmte Zahl in der gleichen Weise zu ordnen, wie es beispielsweise SUMX tun würde. Wenn unsere Tabelle beispielsweise 50 Werte hat, hat das Ergebnis der Funktion RANKX den kleinsten Wert 1 und den größtmöglichen Wert 50, wenn es keine Ex aequo Werte gibt.
<Ausdruck>
Der Parameter erfordert einen beliebigen DAX-Ausdruck, der einen einzelnen Einzelwert liefert. Ein Einzelwert ist eigentlich in diesem Fall immer ein Skalarwert, der im Gegensatz zu einer Menge von Werten steht. Der Ausdruck durchläuft jede Zeile in Ihrer Tabelle und gibt Ihre Werte zurück, um sie entsprechend einordnen zu können. Dabei kann es sich um eine einfache SUMMEN-Funktion oder um komplexere Berechnungen handeln.
Die folgenden 3 Parameter in der Funktion RANKX sind optional, d.h. die obigen 2 Parameter sind erforderlich, um eine bestimmte Spalte zu ordnen.
<Wert> (Optional)
Dieser Wert wird als Standardwert in die Spalte geschrieben, wenn es keine Möglichkeiten zur Berechnung eines Ranges gibt. Ist der Wert z. B. Null, wird kein Sortieralgorithmus ein Rang kalkulieren können.
<Reihenfolge> (Optional)
– ASC: Die Rangfolge erfolgt nach aufsteigenden Werten der Daten.
– DESC: Die Rangfolge erfolgt nach den aufsteigenden Werten der Daten. Dies ist das Standardverhalten der RANKX-Funktion in Power BI, falls der Parameter nicht angegeben ist.
<ties> (Optional) – Wie der Parameter Reihenfolge kann auch dieser nur zwei Werte annehmen
– DENSE: Wenn der Ausdruck den gleichen Wert für den Rang liefert, haben alle diese Zeilen den gleichen Rang (es gibt Duplikate).
– SKIP: Wenn der Ausdruck den gleichen Wert für den Rang zurückgibt, gibt es keine Gleichheit und die Funktion gibt unterschiedliche Ränge für alle Werte zurück. Standardmäßig. Dieser Parameter löst keine Ties auf, da er nicht weiß, welcher Wert an erster Stelle stehen soll. Er dient nur dazu, Werte zuzuordnen.
RANKX als berechnete Spalte (Praxis)
In unserem Bericht legen wir eine neue Spalte mit der Bezeichnung “Rank Amount” an:
Was hat Power BI getan? Es ging durch die Tabelle Customer und hat jeden Wert der Spalte Amount in jeder Zeile genommen und hat sie vom höchsten zum niedrigsten sortiert. Die Ausgabe des Algorithmus gab eine Zahl zurück, die dieser Sortierung entspricht. Diese Zahl sehen wir in der Spalte Rank Amount.
Wie bereits erwähnt, verwendet Power BI standardmäßig Skip als Parameter für die Reihenfolge. Hier haben wir wahrscheinlich viele Werte mit der gleichen Menge, also werden wir Dense verwenden.
Was passiert aber, wenn wir eine weitere Spalte für die Visualisierung hinzufügen?
In diesem Beispiel stellen wir fest, dass wir Duplikate desselben Ranges haben, was vielleicht nicht das Ergebnis ist was wir uns vorgestellt haben. Der Grund dafür ist, dass die Amount-Werte für jede Zeile der Tabelle sortiert werden, unabhängig davon, welchen Wert die Spalte Geschlecht hat. Dies ist ein Paradebeispiel für die “Context-Transition“ in Power BI. In dieser Visualisierung haben wir einen anderen Kontext, d.h. die Mengen sind nicht einzeln gruppiert, sondern pro Produkt und pro Geschlecht.
Bevor wir Fälle mit mehreren Spalten in unserem Kontext behandeln, lassen Sie uns einen Schritt zurückgehen und versuchen, nur eine Spalte zu behandeln. Wir können eine weitere Ebene der Filterung des Rangs direkt in der DAX-Spaltenberechnung hinzufügen:
Mit dieser Änderung haben wir nun in unserer Visualisierung denselben Kontext wie bei der Berechnung der Spalte.
Auf die gleiche Weise können wir auch so viele komplexe Elemente in unserem Kontext hinzufügen, wie wir wollen:
Hier wird die Spalte im Kontext der Kategorie und der Produktspalte für jede Berechnung des Rangs berücksichtigt.
RANKX als Measure (Praxis)
Wir können auch einen Rang als Measure berechnen. Die Syntax ist etwas komplizierter, kann aber für viele Anwendungsfälle immer repliziert werden.
Was hat Power BI getan?
Die Funktion nimmt eine Tabelle als ersten Parameter. Die Tabelle wird mit der Funktion ALL() erstellt, die eine Tabelle zurückgibt und dabei alle Filter ignoriert, die in unserem Filterkontext vorhanden sein könnten. Das zweite Argument nimmt die Funktion SUM(), um jeden Eintrag des Betrags zu addieren, auf den sich unser Filterkontext bezieht.
Mit der Funktion ALL() stellen wir sicher, dass wir tatsächlich die gesamte Tabelle als Eingabe verwenden und jeden Filter ignorieren, der im visuellen Kontext vorhanden sein könnte.
Das Hinzufügen des Measures in einer Visualisierung hat die gleiche Wirkung wie bei einer berechneten Spalte.
Wie wir im letzten Kapitel gesehen haben, haben wir das gleiche Problem, wenn wir versuchen, eine weitere Spalte in unserem Kontext in der Visualisierung hinzuzufügen, die von dem Measure nicht berücksichtigt wurde. Wie bei einer berechneten Spalte gibt es eine Möglichkeit, Measures anzupassen, um die Spalte in unserem Kontext hinzuzufügen.
Dieses Beispiel zeigt, dass das Hinzufügen einer weiteren Spalte in unserem Filterkontext es uns ermöglicht, bei der Berechnung des Measures die Spalte “Produkt” zu berücksichtigen.
Ranking mit COUNTROWS und EARLIER (Praxis)
Es gibt auch eine andere Möglichkeit, einen Rang zu erstellen, der nicht die Funktion RANKX verwendet. Dieser Workaround ist nur als berechnete Spalte möglich.
Die Funktion EARLIER ermittelt den Wert von Amount für die aktuelle Zeile in der Tabelle. In diesem Fall ist es die erste Zeile in der Tabelle, da der Prozess gerade beginnt. EARLIER(Customer[Amount]) gibt uns erstmal den Wert der aktuellen Zeile in der äußeren Schleife.
Die Funktion FILTER() gibt nun eine Tabelle zurück, in der alle Zeilen einen Wert von Amount haben, der größer als der Wert der aktuellen Zeile ist.
Die Funktion COUNTROWS() zählt die Zeilen der gefilterten Tabelle und ordnet diesen Wert der neu berechneten Spalte in der aktuellen Zeile plus 1 zu. Das Hinzufügen von 1 ist erforderlich, um zu verhindern, dass der Wert mit dem höchsten Rang zu einem Leerzeichen wird. Sonst würden wir nur mit 0 anfangen.
Die Formel wiederholt alle Schritte, bis das Ende der Tabelle erreicht ist.
Diese Formel ist zwar praktisch, sollte aber nicht bei großen Tabellen verwendet werden, da sie nicht sehr effizient ist. Wir durchlaufen jede Zeile der Tabelle für jeden Wert, den wir einstufen wollen, so dass die Spalte bei Millionen von Zeilen schwer zu berechnen sein kann.
Ich hoffe wir konnten euch einen ersten Überblick über die Ranking-Funktionen in Microsoft Power BI geben. Falls ihr ähnliche Ranking-Herausforderungen habt, kommt jederzeit auf uns zu!
Interessiert? Dann nichts wie ab zu unserer Power BI Schulung, BI Einführungsworkshop oder Power BI Performanceoptimierung. Damit Wissen nicht nur theoretisch im Kopf bleibt, sondern praktisch umgesetzt werden kann.