Che cos'è la funzione SUMX in Power BI?
La funzione SUMX in Power BI è una potente funzione DAX usata per calcolare la somma di un'espressione valutata per ogni riga in una tabella. Questa funzione è importante perché consente calcoli più complessi rispetto a una semplice somma.
Tieni a portata di mano il nostro cheat sheet DAX per un rapido riferimento a molte delle funzioni DAX più utili che incontrerai.

La sintassi della funzione SUMX è
SUMX(Table, Expression)
- Table: La tabella o espressione di tabella su cui la funzione itera.
- Expression: L'espressione valutata per ogni riga della tabella. Spesso coinvolge dati provenienti da colonne della tabella.
SUMX è particolarmente utile quando devi eseguire calcoli che dipendono dai valori delle singole righe prima di sommarne i risultati. Per esempio, calcolare le vendite totali moltiplicando quantità e prezzo per ogni transazione o applicare tassi di sconto diversi per prodotto prima di sommare il totale scontato. Offre flessibilità e precisione nei calcoli, rendendola una funzione davvero importante da conoscere.
Come funziona SUMX in Power BI
Ecco una panoramica di come funziona la funzione SUMX sotto il cofano:
- Quando viene chiamata, SUMX itera riga per riga sulla tabella specificata. Per ciascuna riga stabilisce temporaneamente un row context, cioè un ambiente in cui i valori della riga corrente sono direttamente accessibili.
- In questo row context, la funzione valuta l'espressione fornita come secondo argomento. L'espressione in genere coinvolge uno o più valori di altre colonne della riga corrente. Mentre la funzione itera sulla tabella, ricalcola questa espressione per ogni riga in base ai dati di quella riga.
- Man mano che SUMX elabora ogni riga, aggrega i risultati, mantenendo un totale progressivo. Power BI usa il motore analitico in memoria di DAX (VertiPaq), ottimizzato per calcoli di questo tipo.
- Dopo aver iterato su tutte le righe, SUMX finalizza il totale aggregato, ossia la somma dei risultati individuali calcolati per ogni riga. Questo valore finale viene restituito come output della funzione.
Capire i contesti
In Power BI, il contesto è fondamentale per capire come funzionano le funzioni DAX come SUMX. Il contesto determina come i valori nei modelli di dati vengono calcolati e visualizzati. Dai un'occhiata al nostro corso di introduzione a DAX, dove trattiamo i contesti in maggior dettaglio. Con la funzione SUMX, ci sono due tipi principali di contesto da considerare: row context e filter context.
Row context
Il row context si riferisce all'ambiente in cui le formule DAX valutano ciascuna riga di una tabella. All'interno di un row context, puoi fare riferimento diretto alle colonne della tabella e le formule DAX useranno il valore della riga corrente nei calcoli.
Quando usi SUMX, crea e sfrutta il row context per funzionare. Per ogni riga nella tabella specificata, SUMX valuta l'espressione data nel contesto di quella riga.
Filter context
Il filter context è l'insieme di filtri applicati ai dati in un report Power BI, come filtri provenienti da visual, slicer e filtri a livello di report. Questo contesto determina quali punti dati sono considerati nei calcoli.
Sebbene SUMX operi in row context per i suoi calcoli riga per riga, questi calcoli sono comunque soggetti al filter context complessivo del report o del visual. Ciò significa che le righe iterate da SUMX sono quelle che soddisfano i criteri definiti dall'attuale filter context.
Interazione tra contesti in SUMX
Quando usi SUMX, la funzione rispetta sia il row context sia il filter context. La tabella su cui SUMX itera è modellata dal filter context, mentre il calcolo per ogni riga avviene nel row context.
Puoi usare una misura all'interno di SUMX. In questo caso si verifica una transizione di contesto, in cui il row context viene temporaneamente trasformato in un filter context equivalente per valutare la misura per ogni riga.
Buone pratiche per SUMX
Quando usi la funzione SUMX in Power BI, tieni a mente alcune buone pratiche:
- Assicurati che il tuo modello dati sia ben strutturato prima di applicare SUMX. Relazioni e schema del modello definiti correttamente sono fondamentali per report Power BI accurati e ottimizzati.
- SUMX non è supportata in modalità DirectQuery quando viene usata in colonne calcolate o regole di sicurezza a livello di riga.
- Mantieni le espressioni usate all'interno di SUMX il più semplici ed efficienti possibile. Evita calcoli eccessivamente complessi che rallentano le prestazioni, soprattutto con dataset di grandi dimensioni.
- Fai attenzione alla transizione di contesto e a come può influire sui risultati della funzione.
- SUMX considera solo i numeri. I valori vuoti, logici e il testo vengono ignorati.
SUMX vs altre funzioni
Alcune funzioni sono simili a SUMX e capire quale usare e quando può creare un po' di confusione. Vediamo due funzioni che causano più spesso dubbi.
SUMX vs SUM
SUM viene usata per calcolare la somma di una colonna in una tabella e ha la seguente sintassi:
SUM(Column)
SUMX itera su ogni riga per valutare un'espressione, mentre SUM aggrega direttamente i valori da una singola colonna. Questo significa che SUMX può gestire calcoli più complessi che coinvolgono più colonne.
Tuttavia, la natura iterativa di SUMX la rende più dispendiosa in termini di risorse, soprattutto con dataset di grandi dimensioni, rispetto a SUM. Tienilo presente se lavori con un modello dati grande e usa SUM per somme semplici.
SUMX vs CALCULATE
CALCULATE modifica il filter context di un calcolo ed è una delle funzioni più potenti in DAX. Questa è la sintassi della funzione CALCULATE:
CALCULATE(Expression, Filter1, Filter2,...)
CALCULATE è ideale quando devi eseguire calcoli sotto condizioni di filtro diverse da quelle attualmente applicate al report o al modello. SUMX, invece, serve per calcoli a livello di riga seguiti da un'aggregazione.
In scenari complessi, possiamo usare CALCULATE con altre funzioni, come SUMX. Per esempio, potresti usare CALCULATE per definire uno specifico filter context entro cui SUMX esegue i suoi calcoli riga per riga e l'aggregazione.
Implementare SUMX in Power BI: guida passo passo
Usando i dati di esempio di Power BI (disponibili quando installi Power BI Desktop), mostreremo come usare la funzione SUMX e come combinarla con altre utili funzioni DAX.
Ecco un'istantanea dei nostri dati che mostra le vendite mensili per diversi prodotti in vari segmenti e paesi.

Passo 1: Creare una misura usando SUMX
Ecco un classico esempio della potenza di SUMX. Vogliamo usare il numero di unità vendute, il prezzo per unità e il valore di eventuali sconti per calcolare il totale delle vendite.
SUMX(Sales, (Sales[Units Sold] * Sales[Sale Price])-Sales[Discounts])
Ecco una tabella che mostra il risultato della nostra funzione SUMX. Come puoi vedere, anche le vendite totali possono avere un filter context applicato: in questo caso, filtriamo per anno e prodotto.

Passo 2: Applicare filtri a SUMX
Possiamo usare i filtri con la funzione SUMX in due modi: con FILTER o CALCULATE.
FILTER viene usata per applicare filtri specifici a una tabella o a un'espressione all'interno di SUMX. Consente un controllo più granulare sulle righe su cui SUMX itera.
SUMX(FILTER(Sales, Sales[Discount Band] = "High"), Sales[Units Sold])
CALCULATE modifica il filter context per la funzione SUMX, consentendo aggregazioni condizionali complesse.
SUMX(Sales, CALCULATE(SUM(Sales[Units Sold]), Sales[Year] = 2020))
Passo 3: Combinare SUMX con altre funzioni
ALL e ALLEXCEPT
Queste funzioni vengono usate per rimuovere i filtri da una tabella o da tutte le tabelle tranne quelle specificate. Sono spesso usate all'interno di CALCULATE e in combinazione con SUMX per eseguire calcoli su un dataset non filtrato.
SUMX(ALL(Sales), Sales[Sale Price] * Sales[Units Sold])
VALUES
VALUES restituisce una tabella a una colonna con i valori unici di una colonna. Puoi combinarla con SUMX per calcoli che richiedono di iterare su valori unici.
SUMX(VALUES(Sales[Country]), [Total Sales])
AVERAGEX, MINX e MAXX
Sono altre funzioni iterative simili a SUMX ma usate per calcolare rispettivamente media, minimo o massimo. Possono essere annidate o usate insieme a SUMX.
AVERAGEX(Customers, SUMX(RELATEDTABLE(Sales), Sales[Units Sold]))
IF e SWITCH
Funzioni logiche come IF e SWITCH possono essere usate all'interno di SUMX per eseguire calcoli condizionali.
SUMX(Sales, IF(Sales[Country] = "Mexico", Sales[Units Sold], 0))
USERELATIONSHIP
USERELATIONSHIP specifica una particolare relazione da usare in un calcolo. È particolarmente utile quando esistono più relazioni tra tabelle.
SUMX(CALCULATETABLE(Sales, USERELATIONSHIP(Date[Date], Sales[Date])), Sales[Units Sold])
Conclusione
In questo tutorial abbiamo approfondito i dettagli della funzione SUMX in Power BI e ti abbiamo mostrato come implementarla in prima persona. Non solo è una funzione DAX flessibile e potente, ma dimostra anche l'importanza di comprendere i contesti in DAX. Per saperne di più, dai un'occhiata allo skill track Power BI fundamentals.



Se hai appena iniziato a imparare Power BI con il nostro career track Data Analyst in Power BI, potresti già conoscere la funzione base SUM dal corso di introduzione a DAX (in caso contrario, dai un'occhiata a questo breve tutorial DAX). In tal caso, potresti anche chiederti che cos'è la funzione SUMX, come funziona e come puoi usarla nelle tue analisi.
Questo tutorial esplorerà la funzione SUMX, risponderà a tutte queste domande e ti guiderà nell'implementazione in Power BI.
Mentre segui questo e altri tutorial su Power BI, ricorda che anche se come business intelligence o Power BI developer potresti non dover imparare a programmare, può essere una grande risorsa per la tua carriera. Leggi il nostro articolo sul perché dovresti imparare a programmare come BI analyst.