ROWNUMBER
Restituisce la classificazione per il contesto corrente all'interno della partizione specificata, ordinata in base all'ordine specificato. Se non è possibile trovare una corrispondenza, rownumber è vuoto.
Sintassi
ROWNUMBER ( [<relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parametri
Termine | Definizione |
---|---|
relation |
(Facoltativo) Espressione di tabella da cui viene restituita la riga di output.
Se specificato, tutte le colonne in orderBy e partitionBy devono provenire da essa.
Se omesso: - orderBy deve essere specificato in modo esplicito.: tutte le colonne orderBy e partitionBy devono essere complete e provenire da una singola tabella.
: per impostazione predefinita viene ALLSELECTED() di tutte le colonne in orderBy e partitionBy . |
axis |
(Facoltativo) Asse nella forma visiva. Disponibile solo nei calcoli visivi e sostituisce relation . |
orderBy |
(Facoltativo) Clausola ORDERBY() contenente le colonne che definiscono la modalità di ordinamento di ogni partizione.
Se omesso: - relation deve essere specificato in modo esplicito.
: per impostazione predefinita l'ordinamento in base a ogni colonna in relation non già specificata in partitionBy . |
blanks |
(Facoltativo) Enumerazione che definisce come gestire i valori vuoti durante l'ordinamento del relation o axis .
I valori supportati sono:
|
partitionBy |
(Facoltativo) Clausola relation viene considerato come una singola partizione. |
matchBy |
(Facoltativo) Clausola |
reset |
(Facoltativo) Disponibile solo nei calcoli visivi. Indica se il calcolo viene reimpostato e a quale livello della gerarchia di colonne della forma visiva. I valori accettati sono: un riferimento di campo a una colonna nella forma visiva corrente, NONE (impostazione predefinita), LOWESTPARENT , HIGHESTPARENT o un numero intero. Il comportamento dipende dal segno intero: - Se zero o omesso, il calcolo non viene reimpostato. Equivalente a NONE .
: se positivo, l'intero identifica la colonna a partire dal più alto, indipendentemente dal livello di granularità. HIGHESTPARENT equivale a 1.
: se negativo, l'intero identifica la colonna a partire dal livello più basso, rispetto alla granularità corrente. LOWESTPARENT equivale a -1. |
Valore restituito
Numero di riga per il contesto corrente.
Osservazioni:
Ogni orderBy
, partitionBy
e matchBy
colonna deve avere un valore esterno corrispondente per definire la riga corrente su cui operare, con il comportamento seguente:
- Se è presente esattamente una colonna esterna corrispondente, viene usato il relativo valore.
- Se non è presente alcuna colonna esterna corrispondente, eseguire le operazioni seguenti:
-
ROWNUMBER determinerà innanzitutto tutte le colonne
orderBy
,partitionBy
ematchBy
senza colonna esterna corrispondente. - Per ogni combinazione di valori esistenti per queste colonne in ROWNUMBER contesto padre, ROWNUMBER viene valutata e viene restituita una riga.
- ROWNUMBER'output finale è un'unione di queste righe.
-
ROWNUMBER determinerà innanzitutto tutte le colonne
- Se sono presenti più colonne esterne corrispondenti, viene restituito un errore.
Se matchBy
è presente, ROWNUMBER tenterà di usare colonne in matchBy
e partitionBy
per idenfity della riga corrente.
Se le colonne specificate all'interno di orderBy
e partitionBy
non possono identificare in modo univoco ogni riga in relation
, allora:
- ROWNUMBER tenterà di trovare il minor numero di colonne aggiuntive necessarie per identificare in modo univoco ogni riga.
- Se è possibile trovare tali colonne, ROWNUMBER
- Provare a trovare il minor numero di colonne aggiuntive necessarie per identificare in modo univoco ogni riga.
- Accodare automaticamente queste nuove colonne alla clausola
orderBy
. - Ordinare ogni partizione usando questo nuovo set di colonne orderBy.
- Se non è possibile trovare tali colonne e la funzione rileva un legame in fase di esecuzione, viene restituito un errore.
reset
possono essere usati solo nei calcoli visivi e non possono essere usati in combinazione con orderBy
o partitionBy
. Se reset
è presente, è possibile specificare axis
ma non relation
.
Esempio 1 : colonna calcolata
La query di DAX seguente:
EVALUATE
ADDCOLUMNS(
'DimGeography',
"UniqueRank",
ROWNUMBER(
'DimGeography',
ORDERBY(
'DimGeography'[StateProvinceName], desc,
'DimGeography'[City], asc),
PARTITIONBY(
'DimGeography'[EnglishCountryRegionName])))
ORDER BY [EnglishCountryRegionName] asc, [StateProvinceName] desc, [City] asc
Restituisce una tabella che classifica in modo univoco ogni area geografica con lo stesso EnglishCountryRegionName, in base al relativo StateProvinceName e City.
Esempio 2 - Calcolo visivo
Il calcolo visivo seguente DAX query:
SalesRankWithinYear = ROWNUMBER(ORDERBY([SalesAmount], DESC), PARTITIONBY([CalendarYear]))
SalesRankAllHistory = ROWNUMBER(ORDERBY([SalesAmount], DESC))
Creare due colonne che classificano in modo univoco ogni mese in base alle vendite totali, sia all'interno di ogni anno che all'intera cronologia.
Lo screenshot seguente mostra la matrice visiva e la prima espressione di calcolo visivo: