In questo esempio utilizzerò i dati già usati per: Analizzare i dati da Excel e MySQL utilizzando Power BI (per esordienti totali)
Quello che vogliamo fare è calcolare, nella tabella agenti, la media delle vendite di tutti gli altri agenti eccetto quello corrente ed utilizzarla come obiettivo KPI.
Anzitutto vediamo come è composta la tabella vendite usando la seguente query:
1 |
SELECT `idAgente`, SUM(`importo`) FROM `vendite` GROUP BY `idAgente` |
I dati che avremo saranno i seguenti:
Ricordiamoci che nel nostro esempio la tabella agenti ha “solo” 6 agenti, fino all’id 6.
Se adesso volessimo calcolare, in SQL, la media delle vendite di tutti gli agenti, escluso quello corrente, per ciascun agente, dovremmo eseguire una query come la seguente:
1 2 3 4 5 |
SELECT a.nome, a.cognome, (SELECT AVG(t.totale_importo) FROM (SELECT v.`idAgente`, SUM(v.`importo`) AS totale_importo FROM `vendite` v GROUP BY v.`idAgente`) t WHERE t.idAgente != a.id) AS obiettivo FROM agenti a |
Questo ci darebbe un risultato simile al seguente:
Per ottenere lo stesso risultato in DAX dovremmo creare una tabella temporanea delle vendite e poi effettuare su di essa il calcolo della media, nel modo seguente:
1 2 3 4 5 6 7 8 9 10 11 |
obiettivo = VAR tabella_provvisoria = SUMMARIZE( 'tommaso3 vendite' , 'tommaso3 vendite'[idAgente], "importo_totale", SUM( 'tommaso3 vendite'[importo]) ) RETURN AVERAGEX( FILTER(tabella_provvisoria, [idAgente] <> 'tommaso3 agenti'[id]) , [importo_totale] ) |
La tabella provvisoria fa le veci della prima query, sulla quale poi eseguiamo il calcolo con AVERAGEX.