SUMX in Power BI o SUM? La scelta giusta in DAX

Emilio Santoro 11 luglio 2026
Impara a usare la funzione SUMX in Power BI per analisi dati avanzate.

Indice

Quando il totale delle vendite non è già presente in una colonna, una semplice SUM non basta. In questi casi SUMX in Power BI permette di calcolare un’espressione riga per riga e sommare poi i risultati, con applicazioni concrete per ricavi, margini, costi, sconti e KPI finanziari.

La funzione che trasforma ogni riga in un calcolo utile

  • SUMX valuta un’espressione per ogni riga di una tabella.
  • La sintassi di base è SUMX(Tabella, Espressione).
  • È la scelta giusta quando devi moltiplicare, sottrarre o applicare una logica prima della somma.
  • SUM è più semplice e spesso più veloce quando devi sommare una colonna già pronta.
  • Il risultato dipende dal contesto filtro, dalle relazioni e dalla granularità del modello.

Report Power BI con SUMX: vendite per territorio e anno, con formule DAX per calcolare le vendite totali.

Perché SUMX è diverso da una semplice somma

La differenza si capisce con un esempio molto comune. In una tabella vendite potresti avere quantità e prezzo unitario, ma non una colonna con il valore totale della riga. SUMX calcola prima ogni importo e solo dopo somma i risultati ottenuti.

Immagina tre righe con questi valori. La prima contiene 2 pezzi a 10 euro, la seconda 5 pezzi a 8 euro e la terza 1 pezzo a 25 euro. Il ricavo complessivo non è la somma delle quantità o dei prezzi, ma il risultato di tre moltiplicazioni distinte, pari a 85 euro.

Ricavi =
SUMX(
    Vendite,
    Vendite[Quantità] * Vendite[PrezzoUnitario]
)

La funzione attraversa la tabella Vendite, entra in ogni riga, esegue la moltiplicazione e accumula il valore risultante. Questa modalità di lavoro fa di SUMX una funzione iteratrice, cioè una funzione che applica un calcolo ripetuto a una serie di righe.

La sua intenzione di ricerca è soprattutto informativa e pratica. Chi cerca questa funzione, di solito, vuole capire perché una misura restituisce un risultato inatteso, come calcolare un margine oppure quando usare SUMX al posto di SUM.

La sintassi e il contesto di riga

La struttura è breve:

SUMX(
, )

Il primo argomento deve essere una tabella, oppure un’espressione DAX che restituisce una tabella. Il secondo è l’espressione da valutare per ogni riga. Può essere una colonna, una moltiplicazione, una sottrazione, una condizione o una misura più articolata.

Per esempio, se esiste già una colonna numerica chiamata Vendite[Importo], puoi scrivere:

Ricavi =
SUMX(
    Vendite,
    Vendite[Importo]
)

Il risultato può essere corretto, ma in questo caso SUM è normalmente più appropriata. SUMX diventa davvero utile quando il valore da sommare deve essere costruito durante l’iterazione.

Il concetto più importante è il contesto di riga. Durante l’esecuzione, DAX considera una riga alla volta, così può leggere la quantità e il prezzo appartenenti proprio a quella riga. Non devi creare manualmente una colonna temporanea per ogni calcolo.

Il contesto di riga non va confuso con il contesto filtro. Il primo indica quale riga sta elaborando l’iteratore; il secondo stabilisce quali dati sono visibili in base a filtri, segmentazioni, relazioni e filtri applicati al report.

Tre esempi pratici per usare SUMX

Calcolare ricavi e margine

Il caso più frequente è il calcolo del ricavo a partire da quantità e prezzo. La stessa logica si applica al margine, aggiungendo il costo unitario.

Ricavi =
SUMX(
    Vendite,
    Vendite[Quantità] * Vendite[PrezzoUnitario]
)

Margine =
SUMX(
    Vendite,
    (Vendite[PrezzoUnitario] - Vendite[CostoUnitario])
        * Vendite[Quantità]
)

Nel secondo esempio ogni riga produce un margine diverso. Il margine totale non è la differenza tra ricavi totali e una media dei costi, ma la somma dei margini calcolati sulle singole transazioni. È una distinzione che evita molti errori nei report commerciali.

Applicare sconti e condizioni

Quando lo sconto varia per riga, SUMX può incorporare la regola direttamente nell’espressione. In questo modo il calcolo rimane leggibile e rispetta la logica del dato originale.

RicaviNetti =
SUMX(
    Vendite,
    Vendite[Quantità]
        * Vendite[PrezzoUnitario]
        * (1 - Vendite[ScontoPercentuale])
)

Se lo sconto è memorizzato come numero intero, per esempio 15 invece di 0,15, serve prima una conversione. Una formula come 1 - Vendite[ScontoPercentuale] produrrebbe un risultato errato. Il formato percentuale deve essere coerente con il valore usato nella formula.

Leggi anche: Relazioni in Power BI - cardinalità, filtri e DAX

Leggere valori da una tabella collegata

SUMX può lavorare anche con informazioni provenienti da una tabella correlata. Supponiamo che la tabella Prodotti contenga il costo standard e che Vendite sia collegata tramite il codice prodotto.

CostoStandardTotale =
SUMX(
    Vendite,
    Vendite[Quantità]
        * RELATED(Prodotti[CostoStandard])
)

RELATED recupera il valore dalla tabella collegata per la riga corrente. Questa soluzione richiede una relazione corretta, normalmente molti-a-uno. Se la relazione manca, è inattiva o usa chiavi non coerenti, il risultato può contenere valori vuoti o non rappresentare il costo reale.

SUM o SUMX quale scegliere

La scelta non riguarda solo la sintassi. Incide sulla chiarezza del modello, sul costo computazionale e sulla facilità di controllo della misura.

Situazione Funzione consigliata Motivo
Somma di una colonna numerica già disponibile SUM Formula più semplice e generalmente più efficiente
Moltiplicazione di quantità e prezzo per ogni riga SUMX Il valore deve essere calcolato prima della somma
Margine, costo o sconto variabile per transazione SUMX La logica dipende dai valori della singola riga
Somma di un’espressione filtrata SUMX con tabella filtrata Permette di definire quali righe elaborare

Quando l’importo è già materializzato in una colonna, preferisco usare SUM(Vendite[Importo]). È più diretta e comunica subito l’intenzione della misura. Usare SUMX senza bisogno non rende il risultato più preciso, ma può rendere il modello più pesante.

Se devi limitare l’iterazione a un insieme di righe, puoi usare FILTER:

RicaviAreaNord =
SUMX(
    FILTER(
        Vendite,
        Vendite[Area] = "Nord"
    ),
    Vendite[Quantità] * Vendite[PrezzoUnitario]
)

Per filtri semplici, spesso una misura con CALCULATE è più leggibile e sfrutta meglio il modello. SUMX con FILTER rimane utile quando la condizione dipende da un’espressione complessa o quando vuoi controllare esplicitamente la tabella da percorrere.

Contesto filtro e risultati nei totali

Una misura con SUMX non calcola sempre lo stesso numero indipendentemente dal punto del report in cui viene usata. Un filtro su anno, regione, cliente o prodotto modifica la tabella visibile all’iteratore e quindi modifica il risultato finale.

Questa misura, per esempio, rispetta automaticamente i filtri applicati al report:

Margine =
SUMX(
    Vendite,
    (Vendite[PrezzoUnitario] - Vendite[CostoUnitario])
        * Vendite[Quantità]
)

Se selezioni il 2026, SUMX elaborerà soltanto le vendite visibili per quel periodo. Se aggiungi la categoria prodotto, il calcolo verrà ripetuto per ogni categoria. Il totale generale può essere ricalcolato sul proprio contesto, invece di essere ottenuto sommando meccanicamente i valori visualizzati nelle righe.

Questo comportamento è corretto, ma sorprende quando si lavora con percentuali, medie o logiche non additive. In caso di differenze tra totale e somma delle righe, controllo prima il contesto filtro e la granularità, non la funzione in sé.

Errori comuni e prestazioni

Il primo errore consiste nel passare un valore scalare come primo argomento. Una misura come SUMX([Ricavi Totali], ...) non è valida perché [Ricavi Totali] restituisce un numero, mentre SUMX richiede una tabella.

Il secondo riguarda la granularità sbagliata. Se il prezzo cambia per ogni riga d’ordine, devi iterare le righe di vendita. Iterare una tabella aggregata per prodotto può perdere informazioni e produrre un margine diverso da quello atteso.

  • Controlla che quantità, prezzi e costi abbiano un tipo numerico.
  • Verifica le relazioni prima di usare RELATED.
  • Evita di iterare una tabella molto grande quando una colonna già calcolata è sufficiente.
  • Usa filtri mirati e non costruire tabelle virtuali più ampie del necessario.
  • Testa la misura con un piccolo campione prima di inserirla in una pagina complessa.

In modelli con milioni di righe, il costo di SUMX dipende dall’espressione e dalla tabella attraversata. Non esiste una soglia universale: una misura rapida su un modello piccolo può diventare lenta in DirectQuery o in un modello con molte trasformazioni.

Per questo verifico la misura con Performance Analyzer e controllo se il calcolo può essere spostato in Power Query, nel database o in una colonna già disponibile. Questa scelta non è sempre migliore, perché una colonna aggiunge memoria e può ridurre la flessibilità, ma spesso evita di ripetere lo stesso calcolo a ogni interazione dell’utente.

Esiste anche una limitazione pratica da ricordare. L’uso di SUMX in colonne calcolate e regole di sicurezza a livello di riga può non essere supportato in modalità DirectQuery, quindi il modello va valutato prima di adottare la formula.

La regola pratica per non sbagliare misura

Io uso questa regola semplice. Se devo sommare una colonna già pronta, scelgo SUM. Se devo calcolare un valore diverso per ogni riga prima di sommarlo, scelgo SUMX.

Quando una misura restituisce un dato inatteso, verifico tre elementi in quest’ordine: la tabella iterata, l’espressione applicata alla riga e i filtri attivi nel visual. Nella maggior parte dei casi il problema non è la funzione, ma una relazione mancante, un tipo numerico errato o un livello di dettaglio non adatto.

Una buona misura SUMX deve essere leggibile, coerente con il modello e proporzionata al volume dei dati. Se la formula descrive bene il processo aziendale e il risultato resta stabile nei diversi filtri del report, hai trovato un uso corretto dell’iteratore, non soltanto una scorciatoia per ottenere un totale.

Questo articolo ha carattere esclusivamente informativo ed educativo. Il materiale è stato elaborato con il supporto di moderni strumenti analitici e linguistici (IA). Prima di prendere una decisione, consulta un esperto.

Domande frequenti

SUM è normalmente più appropriata quando devi sommare una colonna numerica già disponibile, come Vendite[Importo]. SUMX è utile quando devi calcolare un’espressione per ogni riga, ad esempio quantità moltiplicata per prezzo, e sommare poi i risultati.

Per i ricavi puoi usare quantità moltiplicata per prezzo unitario. Con 2 pezzi a 10 euro, 5 a 8 euro e 1 a 25 euro, il totale è 85 euro. Per il margine, SUMX calcola su ogni riga la differenza tra prezzo e costo unitario, moltiplicata per la quantità.

Il risultato dipende dal contesto filtro e dalla granularità del modello. Il totale generale può essere ricalcolato nel proprio contesto, invece di sommare meccanicamente i valori mostrati nelle righe. Occorre quindi controllare filtri attivi, relazioni e tabella iterata.

RELATED richiede una relazione corretta, normalmente molti-a-uno, tra Vendite e Prodotti e chiavi coerenti. Se la relazione manca, è inattiva o non è corretta, il risultato può contenere valori vuoti o non rappresentare il costo reale.

Valuta l'articolo

Valutazione: 0.00 Numero di voti: 0

Tag

sumx
sum
contesto di riga
relazioni
contesto filtro
Autor Emilio Santoro
Emilio Santoro
Mi chiamo Emilio Santoro e mi occupo di analisi dati, business intelligence e data science da 4 anni. Ho iniziato a esplorare questo mondo perché sono affascinato dal potenziale dei dati nel trasformare le decisioni aziendali e nel fornire una comprensione più profonda dei fenomeni. Sul sito mondobi.it, cerco di rendere accessibili concetti complessi, condividendo la mia esperienza nel collegare la teoria alla pratica e nel presentare informazioni in modo chiaro e organizzato. La mia priorità è offrire contenuti accurati, utili e sempre aggiornati, basati su un'attenta verifica delle fonti e un confronto costante con le tendenze del settore.

Condividi post

Scrivi un commento