RANK

Gibt den Rang für den aktuellen Kontext innerhalb der angegebenen Partition zurück, sortiert nach der angegebenen Reihenfolge. Wenn keine Übereinstimmung gefunden werden kann, ist die Rangfolge leer.

Syntax

RANK ( [<ties>][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

Parameter

Begriff Definition
Ties (Optional) Definiert, wie die Rangfolge behandelt wird, wenn zwei oder mehr Zeilen einen Gleichstand aufweisen.
Wenn angegeben, ist der unterstützte Wert entweder DENSE oder SKIP.
Bei Auslassung:
Standardwert SKIP
relation (Optional) Ein Tabellenausdruck, über den die Ausgabezeile zurückgegeben wird.
Falls angegeben, müssen alle Spalten in <orderBy> und <partitionBy> aus diesem Ausdruck stammen.
Bei Auslassung:
– <orderBy> muss explizit angegeben werden.
– Alle <orderBy>- und <partitionBy>-Spalten müssen vollqualifiziert sein und aus einer einzigen Tabelle stammen.
– Für alle Spalten in <orderBy> und <partitionBy> wird standardmäßig ALLSELECTED() verwendet.
Achse (Optional) Eine Achse in der visuellen Form. Nur in visuellen Berechnungen verfügbar und ersetzt <relation>.
orderBy (Optional) Eine ORDERBY()-Klausel mit den Spalten, die definieren, wie jede Partition sortiert wird.
Bei Auslassung:
– <relation> muss explizit angegeben werden.
– Standardmäßig erfolgt die Sortierung nach jeder Spalte in <relation>, die nicht bereits in <partitionBy> angegeben ist.
Leerzeichen (Optional) Eine Enumeration, die definiert, wie leere Werte beim Sortieren behandelt werden.
Die unterstützten Werte sind:
  • KEEP (der Standardwert), wobei das Verhalten für numerische Werte so ist, dass leere Werte zwischen Null und negativen Werten angeordnet werden. Bei Zeichenfolgen werden leere Werte vor allen anderen Zeichenfolgen angeordnet, einschließlich leerer Zeichenfolgen.
  • FIRST: Leerzeichen werden immer am Anfang sortiert, unabhängig von der aufsteigenden oder absteigenden Sortierreihenfolge.
  • LAST: Leerzeichen werden immer am Ende sortiert, unabhängig von der aufsteigenden oder absteigenden Sortierreihenfolge.

Hinweis: Wenn <leere> Parameter und Leerzeichen in der ORDERBY()-Funktion für einen einzelnen Ausdruck angegeben werden, haben <Leerzeichen> für einen einzelnen orderBy-Ausdruck Priorität für den relevanten orderBy-Ausdruck, und orderBy-Ausdrücke ohne Angabe von <Leerzeichen> beachten <leere Parameter in der übergeordneten Window-Funktion>.
partitionBy (Optional) Eine PARTITIONBY()-Klausel mit Spalten, die definieren, wie <relation> partitioniert wird.
Bei Auslassung wird <relation> als eine einzelne Partition behandelt.
matchBy (Optional) Eine MATCHBY()-Klausel, die die Spalten enthält, die definieren, wie Daten abgeglichen werden und die aktuelle Zeile identifiziert wird.
reset (Optional) Nur in visuellen Berechnungen verfügbar. Gibt an, ob die Berechnung zurückgesetzt wird und auf welcher Ebene der Spaltenhierarchie der visuellen Form. Akzeptierte Werte sind: NONE, LOWESTPARENT, HIGHESTPARENT oder ein Integer. Das Verhalten hängt vom Integervorzeichen ab:
 – Wenn null oder ausgelassen, wird die Berechnung nicht zurückgesetzt. Gleichbedeutend mit NONE.
 – Wenn der Integer positiv ist, identifiziert er die Spalte beginnend mit dem höchsten Wert, unabhängig vom Aggregationsintervall. HIGHESTPARENT entspricht 1.
 – Wenn der Integer negativ ist, identifiziert er die Spalte beginnend mit dem niedrigsten Wert, relativ zum aktuellen Aggregationsintervall. LOWESTPARENT entspricht -1.

Rückgabewert

Die Rangnummer für den aktuellen Kontext.

Bemerkungen

  • Jede <orderBy>-, <partitionBy>- und <matchBy>-Spalte muss einen entsprechenden äußeren Wert aufweisen, um die aktuelle Zeile zu definieren, die verarbeitet werden soll. Dies geschieht durch das folgende Verhalten:

    • Wenn es genau eine entsprechende äußere Spalte gibt, wird deren Wert verwendet.
    • Wenn keine entsprechende äußere Spalte vorhanden ist, lautet das Vorgehen wie folgt:
      • RANK ermittelt zunächst alle <orderBy>-, <partitionBy>- und <matchBy>-Spalten, die nicht über eine entsprechende äußere Spalte verfügen.
      • Für jede Kombination vorhandener Werte für diese Spalten im übergeordneten Kontext von RANK wird RANK ausgewertet, und es wird eine Zeile zurückgegeben.
      • Die endgültige Ausgabe von RANK ist eine Rangnummer.
  • Wenn <matchBy> vorhanden ist, versucht RANK, Spalten in <matchBy> und <partitionBy> zu verwenden, um die aktuelle Zeile zu idenfizieren.

  • Wenn die in <orderBy> und <partitionBy> angegebenen Spalten nicht jede Zeile in <relation> eindeutig identifizieren können, können zwei oder mehr Zeilen die gleiche Rangfolge aufweisen, und die Rangfolge wird durch den Ties-Parameter bestimmt.

  • RANK gibt einen leeren Wert für die gesamten Zeilen zurück. Du solltest den Ausdruck gründlich testen.

  • RANK wird nicht mit RANKX verglichen, da SUM mit SUMX verglichen wird.

  • <reset> kann nur in visuellen Berechnungen verwendet werden und kann nicht in Kombination mit <orderBy> oder <partitionBy> verwendet werden. Wenn <reset> vorhanden ist, kann <axis> angegeben werden, aber <relation> kann nicht angegeben werden.

Beispiel 1 – berechnete Spalte

Die folgende DAX-Abfrage:

EVALUATE
ADDCOLUMNS(
    'DimGeography',
    "Rank",
    RANK(
    	DENSE,
    	'DimGeography',
    	ORDERBY(
    		'DimGeography'[StateProvinceName], desc,
    		'DimGeography'[City], asc),
        LAST,
    	PARTITIONBY(
    		'DimGeography'[EnglishCountryRegionName])))
ORDER BY [EnglishCountryRegionName] asc, [StateProvinceName] desc, [City] asc

Gibt eine Tabelle zurück, in der geografische Regionen mit demselben EnglishCountryRegionName nach StateProvinceName und City sortiert sind. Werte der leeren <orderBy>-Spalte werden am Ende sortiert.

Beispiel 2 – visuelle Berechnung

Die folgenden DAX-Abfragen für die visuelle Berechnung:

SalesRankWithinYear = RANK(DENSE, ORDERBY([SalesAmount], DESC), PARTITIONBY([CalendarYear]))

SalesRankAllHistory = RANK(DENSE, ORDERBY([SalesAmount], DESC))

Erstellen zwei Spalten, die jeden Monat nach dem Gesamtumsatz innerhalb jedes Jahres sowie im gesamten Verlauf ordnen.

Der folgende Screenshot zeigt die visuelle Matrix und den ersten Ausdruck der visuellen Berechnung:

DAX visual calculation

INDEX
ORDERBY
PARTITIONBY
WINDOW
ROWNUMBER