Creazione di una classifica (Ranking)

In Power BI disponiamo di funzioni specifiche per l’attribuzione di un ranking secondo una misura aggregata.

<Ranking> = RANKX(<tabella>, <espressione>[, <valore>[, <ordine>]])  

<valore> è il valore del quale cercare il rango, per esempio il nome del Cliente; è un parametro “opzionale” che può essere desunto dal contesto. Normalmente non si indica e la formula diventa la seguente:

<Ranking> = RANKX(<tabella>, <espressione>[,, <ordine>])

<Tabella> è l’insieme delle voci che si vogliono categorizzare, per esempio il nome dei Clienti oppure l’elenco delle categorie di magazzino o i mesi dell’anno, ecc., <espressione> è il criterio di classificazione, per esempio la somma del valore del venduto, <ordine> vale TRUE o FALSE, dove TRUE è il default e intende ” ordine decrescente”.

Rifacciamoci a una tabella di dati fatta così:

Noi classificheremo i clienti per totale delle vendite del periodo.

Per la classifica ci serve una misura “formalizzata” (una misura calcolata) sulla quale misurare; creiamo una “Somma delle vendite”:

Somma vendite = SUM(Vendite[Vendite])

Ora possiamo creare una misura di classificazione:

Rank (Vendite) = RANKX( ALL(Vendite[Cliente]); [Somma vendite])

Questa formula produce la classifica per le vendite che posso usare nella tabella:

Funzionalmente questa formula viene valutata per riga. Accade che ogni riga ha un contesto “cliente” che viene usato come <valore> per trovare il rango del “cliente” della riga di tabella all’interno di tutti i clienti.

La formula trova il rango del cliente nel “contesto” dove viene valutata la formula; cosa intendo: se aggrego le vendite in una tabella pivot per cliente e mese, otterrei una tabella tipo la seguente:

Dove si nota che Giovanni è il mio miglior Cliente (Rank 1) nella riga dove il contesto è il Cliente, ma nei mesi di Febbraio è stato il mio secondo cliente (Luca è stato il mio miglio cliente di febbraio…) perchè il contesto della riga è Cliente/mese, quindi nel mese di febbraio il cliente Giovanni ha rango 2.

Riferimenti DAX:

RANKX https://dax.guide/rankx/