Power BI – calcolo dei totali errati: ecco come risolvere!

Uno dei problemi più noiosi che si riscontrano, utilizzando Power BI in modo un poco più assiduo, riguarda sicuramente il calcolo dei totali errati nelle nostre tabelle.

Ecco un esempio di questo problema: prendiamo una tabella che mostri, per ogni sviluppatore e per ogni progetto di una azienda, l’importo totale in euro del progetto a cui sta lavorando lo sviluppatore stesso e la percentuale del lavoro che ha svolto sul singolo progetto.

Sulla base della percentuale del lavorato sul progetto, desideriamo calcolare il valore in euro dell’apporto del singolo sviluppatore al progetto.

Perc x conteggio di totale = 
SUM('Work'[Perc]) * SUM('Progetti'[totale])/100

Come si può vedere dall’immagine, il risultato, purtroppo, è che il totale della nostra nuova colonna è sbagliato. Power BI applica la formula di (percentuale lavorato * totale progetto) anche sui totali delle colonne “Perc. Lavorato” e “Totale prog.” invece di sommare i singoli valori della colonna “Valore per sing. utente”.

Prima soluzione: passare da una misura calcolata a una colonna calcolata

Per ovviare a questo problema ci sono diverse strade percorribili. La prima soluzione che abbiamo trovato è passare da una misura calcolata a una colonna calcolata. Le colonne calcolate fanno esattamente quello che desideriamo, cioè ci permettono di mostrare il corretto valore su ogni riga, e poi sommare le singole righe per ottenere il corretto valore di totale.

Per creare la colonna calcolata da inserire nella nostra tabella è necessario: cliccare sulla tab di modellazione, selezionare il pulsante “Nuova colonna”, e infine incollare la stessa formula che avevamo utilizzato precedentemente:

Colonna Perc x Conteggio di totale =
'Work'[Perc] * RELATED(Progetti[totale])/100

Come si può vedere, è la stessa formula applicata precedentemente, con un paio di piccole modifiche. La prima è il mancato utilizzo di SUM: su ogni riga viene infatti valutata una colonna calcolata e per questo non è necessario l’utilizzo della funzione SUM. La seconda è l’utilizzo del RELATED, che è stato necessario per fare riferimento alla colonna collegata della tabella progetti.

Ecco il risultato, una tabella nella quale il totale è mostrato correttamente

In alcuni casi, ad esempio quando si utilizzano delle misure, non è possibile risolvere questo problema con l’utilizzo di una colonna calcolata, per cui si deve forzatamente scegliere una strada alternativa.

Seconda soluzione: creare una tabella riassuntiva e utilizzare SUMX

La seconda soluzione cha abbiamo trovato consiste nel:

1) Creare una tabella riassuntiva per singolo sviluppatore

2) Calcolare il valore dell’apporto al progetto per ogni riga di questa nuova tabella

3) Sommare i valori per calcolare il totale solo nel caso della “riga dei totali”

Ecco la formula per questo:

Perc Fixed = 
VAR summarizedTable = 
SUMMARIZE('Work','Persone'[Nome], Persone[Cognome], Progetti[Totale], "perc", [Perc x Conteggio di totale])
RETURN
IF(HASONEVALUE(Persone[Nome]), [Perc x Conteggio di totale],SUMX(summarizedTable,[perc]))

La variabile ‘summarizedTable’ si occupa della fase 1 della soluzione e ci fornisce la tabella riassuntiva di cui abbiamo bisogno. In particolare, SUMMARIZE prende i seguenti parametri:

– la tabella da riassumere (Work),

– le colonne da tenere nella tabella virtuale (necessarie per mantenere il contesto)

– il nome di una nuova colonna da aggiungere alla tabella riassuntiva “Perc”

– la misura della nuova colonna percentuale

Successivamente, SUMX si occupa delle fasi 2 e 3 della soluzione: calcola l’apporto del singolo utente per ogni riga della tabella riassuntiva e lo somma nel caso corretto. La condizione di IF legata alla funziona HASONEVALUE permette di distinguere se siamo nel caso del totale (dove viene mostrata la somma dei valori “summarizzati”) o invece nella normale presentazione del dato di riga.

Ecco il nuovo risultato finale, con il valore dell’apporto del singolo developer corretto:

In conclusione

Spero di essere stato chiaro e di avervi evitato qualche noioso mal di testa, non esitate a fare domande su questo articolo per ulteriori chiarimenti!

Articolo d’origine

Guarda anche gli altri articoli su Giuneco Tech