• Power BI e DAX
  • IF in Power BI con DAX - misure, colonne ed errori da evitare

IF in Power BI con DAX - misure, colonne ed errori da evitare

Bruno De luca 24 luglio 2026
Tabella vendite con calcoli per ogni prodotto, simile a un report di Power BI. Totale 12,4 €.

Indice

Quando un report deve distinguere vendite sopra l’obiettivo, clienti redditizi e ordini da verificare, la funzione IF in Power BI è spesso il punto di partenza più semplice. In questo articolo mostro come usarla in DAX, quando scegliere una colonna calcolata o una misura, come gestire più condizioni e quali errori evitare per ottenere risultati affidabili.

La logica IF rende le analisi DAX più leggibili e operative

  • Sintassi base: IF verifica una condizione e restituisce un valore se è vera oppure un altro se è falsa.
  • Colonna o misura: la scelta dipende dal fatto che la regola debba essere valutata riga per riga oppure secondo i filtri del report.
  • Più scenari: SWITCH(TRUE()) è spesso più chiaro di molti IF annidati.
  • Affidabilità: BLANK, divisioni per zero e tipi di dati diversi possono alterare il risultato.
  • Metodo pratico: definire prima la regola di business e solo dopo tradurla in DAX evita formule difficili da mantenere.

Come funziona IF in DAX

La funzione IF segue una logica molto diretta. Valuta un’espressione logica e restituisce un risultato quando la condizione è vera, oppure un risultato alternativo quando è falsa. La struttura essenziale è questa:

IF(, , )

Per esempio, una colonna che assegna una fascia ai clienti può essere scritta così:

Fascia cliente =
IF(
    'Clienti'[Fatturato] >= 100000,
    "Premium",
    "Standard"
)

Il risultato sarà Premium per i clienti con almeno 100.000 euro di fatturato e Standard per tutti gli altri. È una regola semplice, ma già utile per segmentare una tabella, applicare colori condizionali o filtrare una pagina del report.

Il terzo argomento è opzionale. Se viene omesso e la condizione è falsa, DAX restituisce BLANK. Nella pratica preferisco indicare sempre il valore alternativo quando un risultato vuoto potrebbe confondere chi legge il report. Microsoft Learn segnala inoltre che i risultati di IF devono essere compatibili con un tipo di dato coerente, soprattutto quando si mescolano numeri, testo e valori vuoti.

Colonna calcolata o misura per la stessa regola

La differenza più importante non riguarda la sintassi, ma il momento in cui Power BI valuta la condizione. Una colonna calcolata viene calcolata per ogni riga del modello e rimane memorizzata. Una misura, invece, viene calcolata quando l’utente interagisce con il report e rispetta il contesto dei filtri.
Soluzione Quando usarla Esempio tipico
Colonna calcolata La regola riguarda ogni singolo record Categoria ordine, fascia cliente, stato prodotto
Misura Il risultato deve cambiare con filtri, date o selezioni Obiettivo raggiunto, margine target, alert sulle vendite
Power Query La trasformazione deve avvenire durante l’importazione Pulizia e classificazione stabile dei dati

Una misura per verificare il raggiungimento dell’obiettivo può essere questa:

Stato obiettivo =
IF(
    [Vendite totali] >= [Obiettivo vendite],
    "Obiettivo raggiunto",
    "Da recuperare"
)

La stessa misura può restituire un risultato diverso per regione, mese o agente commerciale, perché [Vendite totali] e [Obiettivo vendite] vengono ricalcolate nel contesto visualizzato.

Un errore frequente consiste nell’usare una misura per classificare ogni riga di una tabella. Una misura non ragiona automaticamente come una colonna. Se devo contare i clienti che superano una soglia individuale, posso iterare sui clienti con SUMX:

Clienti premium =
SUMX(
    VALUES('Clienti'[ClienteID]),
    IF([Vendite cliente] >= 100000, 1, 0)
)

Qui IF viene valutato per ciascun cliente presente nel contesto. È una distinzione fondamentale, perché spesso un risultato apparentemente sbagliato nasce dal contesto di valutazione, non dalla condizione in sé.

Codice DAX in Power BI per calcolare il valore del cliente e l'aggiunta di tasse.

Tre esempi pratici per usare IF in Power BI

Segnalare vendite sopra o sotto il target

Per un indicatore sintetico, la condizione può trasformare una percentuale in un messaggio leggibile:

Risultato commerciale =
VAR Scostamento = DIVIDE([Vendite totali] - [Obiettivo vendite], [Obiettivo vendite])
RETURN
IF(
    Scostamento >= 0,
    "Sopra il target",
    "Sotto il target"
)

L’uso di una variabile DAX rende la formula più facile da controllare e modificare. Se domani la soglia cambia da zero a 5%, basta intervenire su un solo punto della misura.

Gestire il margine

Una classificazione del margine può distinguere le vendite sane da quelle che richiedono attenzione:

Classe margine =
VAR MarginePercentuale =
    DIVIDE([Ricavi totali] - [Costi totali], [Ricavi totali])
RETURN
IF(
    ISBLANK(MarginePercentuale),
    "Non disponibile",
    IF(
        MarginePercentuale >= 0.30,
        "Margine alto",
        "Margine da migliorare"
    )
)

In questo caso controllo prima il valore vuoto e solo dopo applico la soglia del 30%. Senza questo passaggio, mesi privi di ricavi potrebbero apparire come casi negativi invece di essere segnalati correttamente come dati non disponibili.

Creare un alert per gli ordini

IF è utile anche per trasformare dati operativi in un segnale immediato:

Priorità ordine =
IF(
    'Ordini'[Giorni ritardo] > 7
        && 'Ordini'[Valore ordine] > 5000,
    "Alta",
    "Normale"
)

L’operatore && richiede che entrambe le condizioni siano vere. Per accettare almeno una delle due condizioni si usa invece ||. La differenza sembra piccola, ma cambia completamente il significato della regola e può generare molti falsi alert.

Quando IF annidati diventa difficile da mantenere

Due condizioni annidate possono essere perfettamente leggibili. Quando però le soglie diventano quattro o cinque, la formula si trasforma rapidamente in una lunga parentesi difficile da verificare. In questi casi preferisco SWITCH(TRUE()), che permette di elencare le condizioni in modo più ordinato.

Fascia vendite =
SWITCH(
    TRUE(),
    [Vendite totali] >= 200000, "Alta",
    [Vendite totali] >= 100000, "Media",
    [Vendite totali] > 0, "Bassa",
    "Nessuna vendita"
)

DAX verifica le condizioni dall’alto verso il basso e restituisce il primo risultato valido. Per questo l’ordine è decisivo: la soglia più alta deve comparire prima di quella più bassa, altrimenti una vendita da 250.000 euro verrebbe intercettata dalla condizione dei 100.000.

IF resta la scelta migliore quando esistono soltanto due esiti chiari. SWITCH è più adatto per fasce, livelli, stati o classificazioni con molte alternative. Non migliora automaticamente le prestazioni in ogni scenario, ma quasi sempre migliora la leggibilità e riduce il rischio di errori durante le modifiche.

Gli errori che alterano il risultato

Confondere BLANK con zero

Un valore BLANK non significa necessariamente zero. Può indicare che non esiste una riga, che manca una selezione o che la misura non può produrre un risultato. Se voglio sostituire esplicitamente un vuoto con zero, posso usare COALESCE:

Vendite visualizzate =
COALESCE([Vendite totali], 0)

Usare IF per ogni gestione dei vuoti rende spesso il codice più lungo senza aggiungere controllo reale. COALESCE comunica meglio l’intenzione.

Dividere prima di controllare il denominatore

Per percentuali e margini è preferibile DIVIDE rispetto all’operatore `/`, perché gestisce in modo più sicuro un denominatore vuoto o uguale a zero:

Margine % =
DIVIDE(
    [Margine],
    [Ricavi totali],
    0
)

Il terzo argomento indica il valore alternativo. Se la distinzione tra zero e dato non disponibile è importante, posso lasciare il risultato vuoto invece di forzarlo a 0.

Mescolare testo e numeri senza criterio

Una condizione come IF([Vendite totali] > 100000, 1, "No") combina un numero e una stringa. Anche quando DAX riesce a gestire la formula, il risultato può diventare scomodo da aggregare o visualizzare. Mantengo quindi lo stesso tipo di dato nei due rami, per esempio due numeri oppure due etichette testuali.

Leggi anche: DAX Studio con Power BI per capire e velocizzare il DAX

Usare la sintassi sbagliata nel contesto sbagliato

In Power Query si lavora con il linguaggio M, mentre nelle misure e nelle colonne calcolate si usa DAX. La logica può sembrare identica, ma funzioni e sintassi non sono intercambiabili. Anche il separatore degli argomenti può cambiare in base alle impostazioni locali: se la virgola produce un errore, è possibile che l’ambiente richieda il punto e virgola.

Un metodo semplice per costruire formule IF solide

  1. Scrivo la regola in linguaggio naturale. Per esempio, “un cliente è premium se il fatturato annuale è almeno 100.000 euro”.
  2. Definisco l’unità di valutazione. Chiedo se la condizione riguarda una riga, un cliente, un mese o l’intero contesto filtrato.
  3. Scelgo il livello corretto. Uso Power Query per trasformazioni stabili, una colonna per classificazioni riga per riga e una misura per risultati dinamici.
  4. Gestisco i casi limite. Verifico valori vuoti, zeri, soglie uguali e dati mancanti.
  5. Testo con esempi concreti. Controllo almeno un valore sotto soglia, uno sopra soglia e uno esattamente uguale alla soglia.

Questo piccolo processo mi evita di correggere formule dopo la pubblicazione del report. Il test sulla soglia esatta è particolarmente utile: > 100000 e >= 100000 non significano la stessa cosa.

Per formule più articolate uso le variabili con VAR e assegno nomi comprensibili agli intermedi. Una misura leggibile non è solo più elegante: è più facile da validare insieme a chi conosce la regola aziendale ma non lavora quotidianamente con DAX.

La scelta giusta dipende dalla domanda del report

IF è uno strumento essenziale, ma non dovrebbe diventare una soluzione automatica per ogni problema. Se devo classificare un record in fase di caricamento, Power Query può essere più efficiente; se il risultato deve reagire ai filtri, la misura è la scelta naturale; se ho molte categorie, SWITCH rende la logica più trasparente.

Il mio criterio è semplice: prima chiarisco il significato del risultato, poi scelgo la funzione. Una formula breve ma applicata nel contesto sbagliato produce un report apparentemente ordinato e analiticamente fragile. Una condizione ben definita, invece, trasforma DAX in uno strumento concreto per leggere meglio vendite, margini, clienti e operazioni.

Domande frequenti

Usa una colonna calcolata quando la regola deve essere valutata riga per riga, ad esempio per classificare ordini o clienti. Scegli una misura quando il risultato deve cambiare in base a filtri, date o selezioni del report, come nel calcolo dell'obiettivo raggiunto.

Per quattro o cinque scenari è spesso più chiaro usare SWITCH(TRUE()). DAX verifica le condizioni dall'alto verso il basso, quindi bisogna inserire prima le soglie più alte per evitare che una condizione più generica intercetti il risultato.

Controlla i valori vuoti con ISBLANK oppure usa COALESCE quando vuoi sostituire esplicitamente un vuoto con zero. Per percentuali e margini, preferisci DIVIDE all'operatore `/`, indicando eventualmente un valore alternativo per denominatori vuoti o uguali a zero.

Mantieni lo stesso tipo di dato nei due rami della funzione, ad esempio due numeri oppure due etichette testuali. Mescolare un numero e una stringa può rendere il risultato difficile da aggregare o visualizzare.

Valuta l'articolo

Valutazione: 0.00 Numero di voti: 0

Tag

misure
colonne calcolate
power query
if
switch
Autor Bruno De luca
Bruno De luca
Mi chiamo Bruno De Luca e da 9 anni mi dedico con passione all'analisi dei dati, alla Business Intelligence e alla Data Science. Quello che mi affascina di questo campo è la capacità di trasformare numeri grezzi in storie comprensibili, aiutando a prendere decisioni più informate e strategiche. Sul sito mondobi.it, il mio obiettivo è condividere conoscenze, semplificare concetti complessi e offrire prospettive aggiornate, basandomi su un approccio rigoroso di verifica delle fonti e organizzazione delle informazioni. Cerco sempre di rendere i contenuti accessibili e utili, per chiunque voglia navigare nel mondo dei dati con maggiore consapevolezza.

Condividi post

Scrivi un commento