Menu
Menu
Contattaci
Il nostro settore richiede uno studio continuo e una forte attenzione all’innovazione. Incentiviamo quindi dei programmi formativi annuali per tutti i componenti del team, con ore dedicate (durante l’orario di lavoro) e serate formative sia online che in presenza. Sponsorizziamo eventi, sia come partner che semplicemente come partecipanti, e scriviamo articoli su quello che abbiamo imparato per essere, a nostra volta, dei divulgatori.
Vai alla sezione TeamUno 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”.
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.
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:
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!
Guarda anche gli altri articoli su Giuneco Tech
Segui Giuneco sui social