Lukas Lötters

Im ersten Teil dies Blogbeitrags wurde gezeigt, wie man mit RANKX Ränge erstellen kann. Auch wurde gezeigt, wie man mit nicht eindeutigen Attributsspalten in den Lookup-Tabellen umgeht. Um die Formeln so einfach wie möglich zu halten, verwenden wir im Folgenden [Rang Kunde] als Ausgangs-Measure.

Rang Kunde =RANKX(All(‘Kunde‘);[Gesamt Umsatz])

In diesem Blogbeitrag werden die Unterschiede zwischen dynamischen und statischen Rängen in DAX aufgezeigt und wie man diese mit DAX realisieren kann.

Was sind statische Ränge?

Die DAX-Formel in [Rang Kunde] gibt einen statischen Rang in Bezug auf Tabelle ‚Kunde‘ zurück. Das bedeutet, wenn durch einen Filter die Menge der Kundendatensätze eingeschränkt wird, (Seite-, Visuelle- oder Kreuzfilterung) dann ändert sich der vergebene Rang nicht, vergleiche hierzu den Rang von Kunde „ABC-2“ in Abbildung 1 und Abbildung 2. In Abbildung 2 wurde nach Konzern gefiltert und obwohl nur 2 Kunden verbleiben, wurden nicht die Ränge 1 und 2 vergeben sondern 3 und 8, wie zuvor.

Statische Ränge in DAX

Abbildung 1 – Statischer Rang ohne Filter

Statische Ränge in DAX

Abbildung 2 – Filterung auf Konzern ABC

Wo kommen die statischen Ränge her?

Die Ränge sind statisch, da in der DAX-Formel ALL(Kunde) verwendet wurde. „ALL()“ hat die Eigenschaft alle externen Filterbedinungen zu ignorieren, d.h. „RANKX()“, erhält alle Kunden. Die Anzeige von Power BI hingegen, zeigt nur die gefilterten Werte an, intern hat RANKX() aber mit allen Kunden gearbeitet.

Das Ranking ist allerdings nur statisch in Bezug auf die Tabelle ‚Kunde‘. In unserer zweiten Dimensionstabelle ‚Produkte‘ gibt es die Spalte [Farbe]. Wenn wir den Filter auf Konzern aufheben und über die Farbe „Gelb“ filtern erhalten wir folgende Ausgabe, siehe Abbildung 3.

Abbildung 3 - Filter nach Farbe Gelb

Abbildung 3 – Filter nach Farbe Gelb

Hier wurden die Ränge dynamische vergeben. „Kunde ABC-1“ war vorher auf Rang 8, ist jetzt aber auf Rang 10 zusammen mit „Kunde YZ-11“ und die Kunden auf Rang 3 und 4 haben ihre Plätze getauscht.

Vollständig statische Ränge

Wenn man ein vollkommen statischen Rang unabhängig von anderen Filterungen vergeben möchte muss man weiter „All([Dimensionstabelle])“ in die Berechnung des Umsatzes aufnehmen:

Rang Kunde statisch =
RANKX (
    ALL ( Kunde )
;
CALCULATE ( SUM ( Verkauf[Umsatz] )ALL ( Produkt ) )
)

Statische Ränge in DAX

Abbildung 4 – Vollständig statischer Rang

In Abbildung 4 fällt auf,  dass die Ränge nun statischen berechnet wurden, allerdings ist der Umsatz, den wir verwendet haben, nicht der statischen Bedingung unterworfen. Aus diesem Grund ist der Umsatz von Rang 5 höher, als der von Rang 4. Man könnte dies nun durch ein neues statisches Measure in Bezug auf Dimension „Produkt“ beheben, als Folge darauf regiert das Measure nicht mehr auf Filterung in der Dimension „Produkt“.

Gesamt Umsatz statisch = CALCULATE ( SUM ( Verkauf[Umsatz] ); ALL ( Produkt ) )

Dynamische Ränge

Um einen vollständig dynamischen Rang zu erstellen, der auf jedes Filterereignis reagiert, muss man statt des „ALL(Kunde)“ ALLSELECTED(Kunde) verwenden. ALLSELECTED berücksichtigt im Gegensatz zu ALL nur gefilterte Inhalte, siehe Abbildung 5, dadurch passt sich der Rang automatisch bei Filterung an.

Rang Kunde statisch = RANKX (     ALLSELECTED ( Kunde );      [Gesamt Umsatz]  )

Statische Ränge in DAX

Abbildung 5 – Dynamischer und statischer Rang im Vergleich

Ausblenden leerer Zeilen

Etwas störend ist, dass in manchen unserer Rangtabellen Zeilen auftauchen, die leere Gesamtumsätze haben, siehe Abbildung 3 und Abbildung 4. Schöner wäre es, wenn diese Zeilen nicht angezeigt würden. Dies lässt sich durch das Anpassen der Rang Measure erreichen, hier am Beispiel Rang Kunde.

Rang Kunde ohne leere Zeilen = IF (     [Gesamt Umsatz] > 0;     RANKX ( ALL ( Kunde ); [Gesamt Umsatz] );     BLANK () )

Statische Ränge in DAX

Abbildung 6 – Ausblenden leerer Zeilen

Auswählen der Top N

Eine einfache Methode, um nur die TOPN Ränge anzuzeigen, ist einen visuellen Filter auf das Rang Measure zu legen, siehe Abbildung 7 und Abbildung 8.

Statische Ränge in DAX

Abbildung 7 – Filtern auf TOP 5 Ränge

Statische Ränge in DAX

Abbildung 8 – Top 5

Fazit

In diesem Beitrag wurde gezeigt, wie sich statische und dynamische Ränge in DAX realisieren lassen. Zusätzlich wurden einige kleiner Tipps gegeben, wie man die Anzeige durch das Setzten von Filtern und Ausblenden leerer Zeilen verbessern kann.