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/