Quando una misura in Power BI restituisce un numero inatteso, il problema spesso non è la funzione utilizzata, ma il modo in cui i vari elementi DAX lavorano insieme. In questa guida metto ordine tra sintassi, funzioni, operatori, valori, riferimenti a tabelle e colonne, distinguendo anche tra misure, colonne calcolate e contesto di valutazione. Gli esempi pratici aiutano a capire non solo come scrivere una formula, ma soprattutto perché produce un determinato risultato.
La mappa essenziale per capire DAX in Power BI
- Una formula DAX combina nome, assegnazione, funzione, argomenti e riferimenti al modello.
- Le misure si ricalcolano in base ai filtri del report, mentre le colonne calcolate vengono valutate riga per riga.
- Il contesto di filtro cambia il risultato in base a slicer, righe, colonne, relazioni e filtri inseriti nella formula.
- CALCULATE modifica il contesto e rappresenta uno degli strumenti più importanti dell’analisi DAX.
- DIVIDE, SUMX e variabili rendono le formule più sicure, leggibili e facili da mantenere.

Quali sono i componenti di una formula DAX
Per leggere DAX senza perdersi tra parentesi e parentesi quadre, io parto sempre dalla struttura della formula. Un’espressione non è un blocco unico: è composta da elementi con ruoli precisi, proprio come una frase ha soggetto, verbo e complementi.
Vendite totali = SUM ( Sales[SalesAmount] )In questo esempio, Vendite totali è il nome della misura, mentre il simbolo = assegna alla misura l’espressione che segue. La funzione SUM somma i valori della colonna Sales[SalesAmount], dove Sales identifica la tabella e [SalesAmount] la colonna.
| Elemento | Funzione | Esempio |
|---|---|---|
| Nome | Identifica la misura, la colonna o la tabella calcolata | Vendite totali |
| Assegnazione | Indica l’inizio dell’espressione | = |
| Funzione | Esegue un calcolo o una trasformazione | SUM |
| Argomento | Fornisce alla funzione i dati su cui lavorare | Sales[SalesAmount] |
| Operatori | Combinano o confrontano valori ed espressioni |
*, >, &&
|
Funzioni e argomenti
Le funzioni DAX hanno un nome seguito da parentesi tonde. Tra le parentesi inserisco uno o più argomenti, cioè valori, colonne, tabelle o altre espressioni. Una formula può contenere funzioni annidate, ma quando la nidificazione diventa difficile da leggere preferisco introdurre variabili con VAR.
Margine percentuale =
VAR Margine = [Vendite totali] - [Costi totali]
RETURN
DIVIDE ( Margine, [Vendite totali] )Qui VAR salva un risultato intermedio e RETURN indica ciò che la misura deve restituire. È una scelta semplice, ma spesso fa la differenza quando una formula viene modificata dopo mesi o deve essere controllata da un altro analista.
Riferimenti a tabelle e colonne
La forma più chiara per citare una colonna è Tabella[Colonna]. Per una misura si usano invece le parentesi quadre, come in [Vendite totali]. Confondere questi due riferimenti è uno degli errori iniziali più comuni, perché una colonna contiene molti valori, mentre una misura restituisce un risultato calcolato nel contesto corrente.
Il separatore degli argomenti può apparire come virgola o punto e virgola in base alle impostazioni locali di Power BI Desktop. Quando una formula copiata da un’altra installazione genera un errore di sintassi, il separatore è uno dei primi elementi che controllo.
Valori, operatori e funzioni svolgono lavori diversi
Una formula DAX può restituire un valore scalare, come un numero, una data, un testo o un valore booleano. Alcune funzioni restituiscono invece una tabella temporanea, che può diventare l’argomento di un’altra funzione. Questa distinzione è essenziale per capire perché una funzione come SUM non può ricevere direttamente qualsiasi espressione tabellare.
| Categoria | A cosa serve | Esempi utili |
|---|---|---|
| Aritmetica | Esegue calcoli numerici |
+, -, *, /, ^
|
| Confronto | Restituisce TRUE o FALSE |
=, ==, >, <>
|
| Logica | Combina condizioni |
&&, ||, IN
|
| Testo | Unisce o modifica stringhe |
&, CONCATENATEX, FORMAT
|
| Aggregazione | Calcola somme, medie o conteggi |
SUM, AVERAGE, COUNTROWS
|
Gli operatori seguono un ordine di precedenza. Per esempio, =5 + 2 * 3 restituisce 11 perché la moltiplicazione viene eseguita prima dell’addizione. Con =(5 + 2) * 3 il risultato diventa 21. Le parentesi non servono solo a rispettare la sintassi: chiariscono anche l’intenzione della formula e prevengono calcoli ambigui.
Un dettaglio che può falsare i risultati riguarda il valore BLANK. Nei confronti generici, DAX può trattarlo come zero, stringa vuota o FALSE, mentre l’operatore == richiede una corrispondenza stretta. Quando distinguere un valore mancante da uno zero è importante, uso ISBLANK oppure il confronto strettamente uguale.
Misure, colonne calcolate e tabelle non sono intercambiabili
La scelta dell’oggetto DAX è spesso più importante della funzione. Una misura, una colonna calcolata e una tabella calcolata possono usare funzioni simili, ma vengono valutate in momenti diversi e rispondono a esigenze diverse.
| Oggetto | Quando viene calcolato | Uso tipico |
|---|---|---|
| Misura | Quando il visual o il filtro richiede il risultato | Totali, margini, percentuali, KPI dinamici |
| Colonna calcolata | Durante il caricamento o il refresh del modello | Categorie, classificazioni, chiavi e valori riga per riga |
| Tabella calcolata | Durante il refresh del modello | Tabelle di supporto, calendari e analisi intermedie |
Se voglio calcolare le vendite totali in una scheda filtrabile per anno, prodotto e area, creo una misura. Se invece devo assegnare a ogni riga un’etichetta come “Alta priorità” quando l’importo supera una soglia, una colonna calcolata può essere più adatta.
Vendite totali = SUM ( Sales[SalesAmount] )
Classe ordine =
IF ( Sales[SalesAmount] >= 1000, "Alta", "Standard" )Le colonne calcolate aumentano la dimensione del modello perché salvano un risultato per ogni riga. Per questo, quando il calcolo deve reagire alle selezioni dell’utente, preferisco quasi sempre una misura. La colonna resta utile quando il valore deve essere utilizzato come categoria, filtro o campo di raggruppamento.
Il contesto decide il risultato della formula
Il contesto è il componente che più spesso mette in difficoltà chi arriva da Excel. La stessa misura può restituire numeri diversi perché Power BI la valuta in base a righe, colonne, slicer, filtri del report e relazioni tra tabelle.
Contesto di filtro
Il contesto di filtro è l’insieme dei dati visibili durante il calcolo. Se inserisco una misura in una matrice con Anno sulle righe, la misura viene valutata separatamente per ogni anno. Se aggiungo uno slicer per la regione, il risultato viene ulteriormente limitato a quella selezione.
Vendite negozio =
CALCULATE (
[Vendite totali],
Channel[ChannelName] = "Store"
)CALCULATE valuta un’espressione in un contesto modificato. Nell’esempio, la misura delle vendite viene ricalcolata mantenendo i filtri già presenti e aggiungendo la condizione relativa al canale Store. È questo comportamento a rendere possibile la maggior parte delle analisi comparative in Power BI.
Contesto di riga
Il contesto di riga indica la riga corrente e compare soprattutto nelle colonne calcolate e nelle funzioni iteratore. Funzioni come SUMX, AVERAGEX e FILTER percorrono una tabella, valutando un’espressione per ogni riga o per ogni elemento filtrato.
Valore vendite =
SUMX (
Sales,
Sales[Quantity] * Sales[UnitPrice]
)La differenza rispetto a SUM è concreta. SUM aggrega una colonna già valorizzata, mentre SUMX calcola prima il prodotto riga per riga e solo dopo somma i risultati. Usarlo quando non serve può rendere il modello più pesante, ma in questo scenario è la funzione corretta.
Come costruire formule DAX più solide
Quando creo una nuova misura, seguo una sequenza breve. Prima definisco il risultato in linguaggio naturale, poi verifico quali tabelle devono filtrarlo e solo alla fine scelgo la funzione. Questo approccio riduce la tentazione di partire da una formula complessa trovata online senza comprenderne il comportamento.
- Definisco il KPI e chiarisco se deve reagire ai filtri del report.
- Controllo il modello, soprattutto relazioni, direzione dei filtri e tabella calendario.
- Creo una misura base, come vendite, costi o quantità.
- Costruisco misure derivate usando variabili e funzioni mirate.
- Verifico il risultato in una tabella con più livelli di dettaglio, non soltanto in una scheda KPI.
Per le divisioni uso normalmente DIVIDE invece dell’operatore /. In questo modo posso gestire in modo esplicito il caso in cui il denominatore sia zero o vuoto.
Margine percentuale =
DIVIDE (
[Margine],
[Vendite totali],
0
)Il terzo argomento restituisce 0 quando la divisione non è possibile. In alcuni report preferisco lasciare il risultato vuoto, perché uno zero può suggerire che il margine sia realmente nullo. La scelta dipende dal significato del KPI e da come verrà letto dal destinatario.
Leggi anche: Power BI e DAX - modelli, KPI e report affidabili
Errori che controllo per primi
- Colonne e misure confuse, soprattutto quando una formula restituisce un errore di tipo.
- Relazioni mancanti o inattive, che impediscono a un filtro di raggiungere la tabella dei fatti.
- Uso eccessivo di colonne calcolate, con conseguente crescita inutile del modello.
-
Filtri rimossi senza volerlo tramite funzioni come
ALLo argomenti errati inCALCULATE. - Divisioni non protette, che generano errori o risultati poco leggibili.
Un ultimo controllo che considero indispensabile è il confronto tra il totale della misura e una semplice aggregazione dei dati di origine. Se i numeri non coincidono, non correggo subito la formula: verifico prima filtri, granularità e relazioni. In DAX il calcolo può essere perfettamente corretto e applicato però al contesto sbagliato.
La sequenza che uso per non perdere il controllo del modello
Per imparare i componenti DAX non serve memorizzare centinaia di funzioni. Conviene partire da poche misure affidabili, comprendere la differenza tra contesto di riga e contesto di filtro e osservare come CALCULATE modifica il risultato.
Il percorso più efficace, secondo la mia esperienza, è costruire un piccolo modello di vendite con una tabella calendario, una tabella dei prodotti e una tabella dei fatti. Da lì si possono testare somme, percentuali, confronti temporali e filtri, controllando ogni misura in una matrice.
Quando la formula è leggibile, il modello ha relazioni coerenti e il risultato è stato verificato in più contesti, DAX smette di sembrare una raccolta di funzioni isolate. Diventa il linguaggio che collega dati, logica di business e decisioni operative dentro Power BI.
