Condividi tramite


RANK

Si applica a:colonna calcolatatabella calcolata calcolo visivomisura

Restituisce la classificazione per il contesto corrente all'interno della partizione specificata, ordinata in base all'ordine specificato. Se non è possibile trovare una corrispondenza, la classificazione è vuota.

Sintassi

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

Parametri

Termine Definizione
ties (Facoltativo) Definisce come gestire la classificazione quando due o più righe sono associate.
Se specificato, il valore supportato è DENSE o SKIP.
Se omesso:
- Impostazione predefinita ignora
relation (Facoltativo) Espressione di tabella da cui viene restituita la riga di output. Se utilizzato nei calcoli visivi, questo parametro accetta un asse nella forma visiva.
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.
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:
  • DEFAULT (valore predefinito), dove il comportamento per i valori numerici è vuoto viene ordinato tra zero e valori negativi. Il comportamento per le stringhe è costituito da valori vuoti prima di tutte le stringhe, incluse le stringhe vuote.
  • FIRST, gli spazi vuoti vengono sempre ordinati all'inizio, indipendentemente dall'ordinamento crescente o decrescente.
  • LAST, gli spazi vuoti vengono sempre ordinati alla fine, indipendentemente dall'ordinamento crescente o decrescente.
Nota, quando il parametro e gli spazi vuoti nella funzione () su singole espressioni vengono specificati entrambi, su un'espressione orderBy singola assume la priorità per l'espressione orderBy pertinente e le espressioni orderBy senza specificato rispediranno il parametro nella funzione padre.
partitionBy (Facoltativo) Clausola () contenente le colonne che definiscono la modalità di partizionamento . Se omesso, relation viene considerato come una singola partizione.
matchBy (Facoltativo) Clausola () contenente le colonne che definiscono come trovare le corrispondenze con i dati e identificare la riga corrente.
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, HIGHESTPARENTo 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 classificazione per il contesto corrente.

Osservazioni

  • Ogni orderBy, partitionBye 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:
      • RANK determinerà innanzitutto tutte le colonne orderBy, partitionBye matchBy senza colonna esterna corrispondente.
      • Per ogni combinazione di valori esistenti per queste colonne in RANK contesto padre, RANK viene valutata e viene restituita una riga.
      • RANK'output finale è un numero di classificazione.
  • Se matchBy è presente, RANK 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, due o più righe possono avere la stessa classificazione e la classificazione verrà determinata dal parametro ties.

  • RANK restituisce un valore vuoto per le righe totali. È consigliabile testare accuratamente l'espressione.

  • RANK non viene confrontato con RANKX come SUM confrontato con SUMX.

  • 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.

  • Se il valore di reset è assoluto (ad esempio, un numero intero HIGHESTPARENT positivo o un riferimento a un campo) e il calcolo viene valutato al livello di destinazione o superiore al livello di destinazione nella gerarchia, il calcolo viene reimpostato per ogni singolo elemento. Ovvero, la funzione viene valutata all'interno di una partizione contenente solo l'elemento specifico.

Esempio 1 : colonna calcolata

La query di DAX seguente:

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

Restituisce una tabella che classifica ogni area geografica con la stessa proprietà EnglishCountryRegionName, in base a StateProvinceName e City. I valori di colonna orderBy vuoti vengono ordinati alla fine.

Esempio 2 - Calcolo visivo

Il calcolo visivo seguente DAX query:

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

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

Creare due colonne che classificano 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:

DAX calcolo visivo

INDEX ORDERBY PARTITIONBY WINDOW ROWNUMBER