Valore cumulato sulla classifica

Questo articolo affronta il tema della costruzione della somma cumulata lungo una classificazione. Il tema è la risposta a domande del tipo “quali sono i clienti che fanno l’80% del fatturato?” oppure “quale percentuale del fatturato rappresentano i primi 10 prodotti?”.

Per l’esercizio ci rifacciamo a un elenco di valori per i quali abbiamo già costruito un rango (vedi questo articolo:
Creazione di una classifica (Ranking)“).

Ora vediamo come costruire la somma cumulata per la seconda tabella, dove ci aspettiamo di avere 6.000 nella prima riga, 11.000 nella seconda, 16.000 nella terza e così via.

La logica della formula è: “somma i valori di fatturato per tutti i clienti che hanno un ranking minore o uguale al mio”.

La formula è un po’ complessa ed è la seguente:

Vendite Nette Cumulate (Per Rank) = 
VAR RankCorrente = [Rank (Vendite)]
return CALCULATE(
    [Somma vendite];
    FILTER(
        ALLSELECTED(Vendite[Cliente]);
        [Rank (Vendite)] <= RankCorrente
    )
)

La formula vedete che è complessa, perchè necessita di almeno due passaggi:

  • il primo passaggio prende il rank corrente del cliente che ho in riga e lo mette da parte in una variabile che si chiama RankCorrente;
  • il secondo calcola il valore della misura [Somma Vendite] (che fa la somma delle vendite) per tutti i Clienti (in pratica esce dal contesto di riga che è il Cliente singolo, ed estende il calcolo a tutti i Clienti, filtrando i soli Clienti con un ranking inferiore o uguale al corrente).

Il risultato finale è il seguente:

Ora possiamo calcolare un ulteriore rapporto che è il “totale cumulato delle vendite” / “Totale delle vendite”.

Se abbiamo capito il trucco, ora dovrebbe essere abbastanza ciaro che strada seguire:

Vendite Nette Cumulate (Per Rank) % = 
DIVIDE(
    Vendite[Vendite Nette Cumulate (Per Rank)];
    CALCULATE(
        [Somma vendite];
        ALLSELECTED(Vendite[Cliente])
    )
)

Praticamente dividiamo la misura delle vendite cumulate per la somma selle vendite di tutti i clienti selezionati.

Risultato:

Riferimenti DAX utili:

ALLSELECTED https://dax.guide/allselected/
FILTER https://dax.guide/filter/
CALCULATE https://dax.guide/calculate/
DIVIDE https://dax.guide/divide/