ROWNUMBER

Gilt für:Berechnete SpalteBerechnete TabelleMeasureVisuelle Berechnung

Gibt den eindeutigen 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 Zeilennummer leer.

Syntax

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

Parameter

Begriff Definition
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:
  • DEFAULT (Standardwert), bei dem das Verhalten für numerische Werte leere Werte sind, werden zwischen 0 (null) und negativen Werten sortiert. 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 Zeilennummer 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:
    • ROWNUMBER 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 ROWNUMBER wird ROWNUMBER ausgewertet, und es wird eine Zeile zurückgegeben.
    • Die endgültige Ausgabe von ROWNUMBER ist eine Vereinigung dieser Zeilen.
  • Wenn es mehr als eine entsprechende äußere Spalte gibt, wird ein Fehler zurückgegeben.

Wenn <matchBy> vorhanden ist, versucht ROWNUMBER, 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, gilt Folgendes:

  • ROWNUMBER versucht, die kleinstmögliche Anzahl zusätzlicher Spalten zu finden, die zur eindeutigen Identifizierung jeder Zeile erforderlich sind.
  • Wenn solche Spalten gefunden werden können, wird ROWNUMBER
    • versuchen, die kleinstmögliche Anzahl zusätzlicher Spalten zu finden, die zur eindeutigen Identifizierung jeder Zeile erforderlich sind.
    • diese neuen Spalten automatisch an der <orderBy>-Klausel anfügen.
    • jede Partition mit diesem neuen Satz von orderBy-Spalten sortieren.
  • Wenn solche Spalten nicht gefunden werden können und die Funktion zur Laufzeit einen Gleichstand erkennt, wird ein Fehler zurückgegeben.

<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',
    "UniqueRank",
    ROWNUMBER(
    	'DimGeography',
    	ORDERBY(
    		'DimGeography'[StateProvinceName], desc,
    		'DimGeography'[City], asc),
    	PARTITIONBY(
    		'DimGeography'[EnglishCountryRegionName])))
ORDER BY [EnglishCountryRegionName] asc, [StateProvinceName] desc, [City] asc

Gibt eine Tabelle zurück, in der geografische Regionen mit demselben EnglishCountryRegionName eindeutig nach StateProvinceName und City sortiert sind.

Beispiel 2 – visuelle Berechnung

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

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

SalesRankAllHistory = ROWNUMBER(ORDERBY([SalesAmount], DESC))

Erstellen zwei Spalten, die jeweils 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:

Visuelle DAX-Berechnung

INDEX
ORDERBY
PARTITIONBY
WINDOW
RANK