Padroneggiare COUNTIF() in Power BI: un approccio basato su DAX
Gli utenti di Power BI che provengono da Excel scoprono sempre che Power BI non ha una funzione COUNTIF() nativa. Questo articolo mostra vari modi per implementare COUNTIF() in Power BI e i suoi casi d’uso pratici.
La funzione COUNTIF() è molto usata in Excel perché permette di contare i dati in base a una condizione. Tuttavia, passando a Power BI, molti utenti hanno notato che Power BI non dispone di una funzione COUNTIF() nativa.
Per fortuna, è possibile replicare la funzionalità di COUNTIF() usando diverse formule DAX (Data Analysis Expressions). In questo articolo vedrai come ottenere calcoli in Power BI simili a COUNTIF() usando funzioni DAX come CALCULATE(), COUNTROWS(), COUNTA() e FILTER().
Perché COUNTIF() non esiste in Power BI
A differenza di Excel, basato su formule per celle, Power BI si fonda su calcoli per tabelle e contesto di filtro. Opera su tabelle e sulle loro relazioni, utilizzando DAX per i calcoli.
Invece di fare riferimento a singole celle, DAX lavora con colonne e applica i calcoli in modo dinamico in base al contesto di filtro, determinato da slicer, filtri su righe/colonne e relazioni tra tabelle.
Excel COUNTIF() usa un approccio basato su celle, in cui le formule vengono applicate riga per riga entro un intervallo specificato. L’approccio di Power BI è diverso perché sfrutta le relazioni tra tabelle per affinare i calcoli. Invece di scansionare singole celle, applica filtri basati sul contesto del report tramite DAX.
Implicazioni per gli utenti
Se arrivi a Power BI da Excel, devi adattarti all’approccio di calcolo basato sulle tabelle. Gli approcci DAX, che operano sulle colonne dei dati, sono più efficienti rispetto alle iterazioni riga per riga.
A differenza di Excel, in Power BI devi scegliere il metodo più adatto per replicare COUNTIF() in base al tuo modello dati. Quindi, come utente, devi disimparare l’abitudine di applicare formule a singole celle e iniziare a pensare in termini di tabelle e contesti di filtro.
Funzioni DAX fondamentali per replicare la logica di COUNTIF()
L’approccio per implementare COUNTIF() in Power BI dipende da fattori come le relazioni tra tabelle, la presenza o meno di valori mancanti nei dati, la dimensione del dataset e così via. Alcune funzioni DAX sono meglio ottimizzate per elaborazioni più rapide ed efficienti.
Panoramica delle funzioni chiave
Le funzioni DAX servono per creare colonne calcolate, misure e tabelle. Ecco alcune funzioni DAX che ti aiuteranno a replicare la funzionalità di COUNTIF() in Power BI.
CALCULATE(): Questa funzione modifica il contesto di filtro per un’espressione e consente di applicare nuovi filtri o modificare quelli esistenti in modo dinamico. Ad esempio, puoi usarla per calcolare le vendite totali di una determinata area.
COUNTROWS(): Conta il numero di righe in una tabella specificata e, in combinazione con funzioni di filtro, consente di contare solo determinate righe. Un esempio è contare gli ordini di vendita superiori a 1.000 $.
COUNTA(): Conta i valori non vuoti in una colonna, utile quando si hanno dati mancanti. Ad esempio, puoi contare gli ID cliente non vuoti, assicurandoti di considerare solo i record validi.
FILTER(): Di solito usata con CALCULATE() e COUNTROWS(), restituisce una tabella in base a una condizione. Per esempio, puoi restituire una tabella con ordini di vendita superiori a 500 $.
ALLEXCEPT(): Rimuove tutti i filtri applicati tranne quelli specificati; ad esempio, puoi restituire una tabella con le vendite totali per area anche se sono attivi slicer o filtri sulla tabella. È importante quando lavori con aggregazioni su gerarchie.
RELATEDTABLE(): Restituisce una tabella basata su relazioni esistenti. Un esempio è contare il numero di ordini per ciascun cliente sfruttando le relazioni dai dati cliente.
Come lavorano insieme
Poiché COUNTROWS() conta il numero di righe in una tabella, puoi restituire una tabella dei tuoi dati che rispetta una condizione usando FILTER(). Poi usa CALCULATE() per modificare il contesto di filtro, assicurando che COUNTROWS() consideri solo le righe che soddisfano la condizione. Ecco un esempio di sintassi DAX che mostra come funziona.
Sales over 5 quantities =
CALCULATE(
COUNTROWS(Sales),
FILTER('Sales, 'Sales[Quantity] > 5)
)Offerto da
La funzione CALCULATE() è in un certo senso come combinare due espressioni diverse. Invece di usare COUNTROWS() per contare tutti i dati, CALCULATE() lo limita al contesto di filtro derivato con FILTER().
Esempi base di equivalenti di COUNTIF() in Power BI
Prima di mostrarti alcuni esempi su come implementare COUNTIF() in Power BI, assicurati di caricare i dati di vendite del supermercato.
Esempio 1: Numero di ordini da clienti donne
La sintassi DAX qui sotto calcola il numero di ordini effettuati da clienti di sesso femminile.
Orders by female customers =
CALCULATE(
COUNTROWS(Sales),
FILTER(Sales, Sales[Gender] = "Female")
)Offerto da
Numero di ordini da clienti donne. Immagine dell’autore.
FILTER(Sales, Sales[Gender] = "Female") filtra gli ordini per clienti di sesso femminile.
COUNTROWS(Sales), invece di contare tutti i dati, conta la tabella filtrata grazie all’influenza di CALCULATE().
Esempio 2: Conteggio degli ordini per città
Di seguito una sintassi DAX per contare il numero di ordini per ciascuna città.
Total Orders by City = CALCULATE(COUNTA(Sales[City]), ALLEXCEPT(Sales, Sales[City]))Offerto da
Numero di ordini per città. Immagine dell’autore.
COUNTA(Sales[City]) conta i valori non vuoti nella colonna City.
ALLEXCEPT(Sales, Sales[City]) rimuove tutti i filtri tranne la colonna City dalla tabella Sales.
CALCULATE() fa sì che COUNTA() sia calcolata separatamente per ciascuna città, comportandosi come un COUNTIF() di Excel.
Esempio 3: Metodo alternativo con COUNTROWS
Un’alternativa è usare la sintassi DAX qui sotto, che impiega COUNTROWS() invece di COUNTA().
Total Orders by City = CALCULATE(COUNTROWS(Sales), ALLEXCEPT(Sales, Sales[City]))Offerto da
COUNTROWS() conta il numero di righe nella tabella Sales indipendentemente dalla presenza di valori vuoti.
Se la colonna City è vuota, entrambi gli approcci restituiranno gli stessi risultati. Tuttavia, se nella colonna City ci sono valori mancanti, COUNTA() li esclude, mentre COUNTROWS() li include.
Dovresti usare COUNTROWS() quando ogni riga rappresenta un record, come un ordine di vendita. Ma se i tuoi dati contengono alcuni record non validi, puoi usare COUNTA(), che conta solo i record con un valore valido.
Uso delle misure per calcoli dinamici
Capita di dover creare misure che cambiano dinamicamente in base a un filtro di tabella o a uno slicer. Questa sezione mostra come implementare COUNTIF() in tali scenari.
Scenario: conteggio degli ordini ad alto valore
Ecco un esempio in cui ci interessa conoscere gli ordini con quantità totale superiore a cinque.
High Value Orders = COUNTROWS(FILTER(Sales, Sales[Quantity] > 5))Offerto da
Numero di ordini ad alto valore. Immagine dell’autore.
FILTER(Sales, Sales[Quantity] > 5) restituisce gli ordini con quantità superiore a cinque.
COUNTROWS() conta le righe nella tabella filtrata con ordini superiori a cinque.
A differenza delle colonne calcolate che, una volta create, aumentano l’archiviazione e la dimensione del modello, le misure vengono calcolate solo quando servono, risultando più efficienti. La sintassi DAX per creare una colonna calcolata sarebbe così:
High Value = IF(Sales[Quantity] > 5, 1, 0)Offerto da
Colonna calcolata High Value. Immagine dell’autore.
Questo memorizzerebbe un 1 o 0 statico in ogni riga. Per contare gli ordini ad alto valore, dovresti creare una misura usando SUM(Sales[High Value]).
Immagina di creare colonne calcolate per ogni filtro. Aumenterebbe l’uso di archiviazione e ridurrebbe la flessibilità.
Ecco una tabella che mostra perché dovresti preferire le misure alle colonne calcolate.
Measure
Calculated Column
Calcolata al momento della query, risponde ai filtri
Statica, calcolata quando i dati vengono caricati/aggiornati
Più efficiente, calcolata solo quando serve
Consuma spazio e aumenta la dimensione del modello
Si adatta dinamicamente in base a filtri, slicer e visual
I valori restano invariati finché i dati non vengono aggiornati.
Tecniche avanzate e condizioni multiple
In Excel, COUNTIFS() supporta condizioni multiple, cosa che puoi replicare anche in Power BI.
Criteri multipli / logica COUNTIFS()
Ecco una sintassi DAX per contare gli ordini con quantità superiore a cinque, pagati con carta di credito.
Numero di ordini con quantità superiore a cinque e pagati con carta di credito. Immagine dell’autore.
La formula filtra la tabella Sales dove la quantità supera 5 e il metodo di pagamento è carta di credito. && rappresenta l’operatore AND, assicurando che vengano contati gli ordini che soddisfano entrambe le condizioni.
Se ti interessano gli ordini che soddisfano almeno una delle condizioni, usa l’operatore OR, rappresentato da || in DAX.
Numero di ordini con quantità superiore a cinque o pagati con carta di credito. Immagine dell’autore.
Uso di operatori logici e variabili
La sintassi DAX che replica COUNTIF() a volte può diventare complessa. Usare variabili aiuta la leggibilità e garantisce che le condizioni siano valutate nell’ordine desiderato. Evita anche calcoli ridondanti memorizzando i valori una sola volta.
Ecco un altro esempio che mostra come contare il numero di ordini effettuati da clienti donne, pagati con carta di credito oppure con quantità superiore a cinque, usando variabili.
CreditCard Or Above 5 By Female =
VAR FilteredSales =
FILTER(
Sales,
(Sales[Quantity] > 5 || Sales[Payment] = "Credit card")
&& Sales[Gender] = "Female"
)
RETURN
COUNTROWS(FilteredSales)Offerto da
Numero di ordini da clienti donne pagati con carta di credito o con quantità superiore a cinque. Immagine dell’autore.
Il filtro è memorizzato in una variabile usata in COUNTROWS(). Ecco un altro modo di scrivere l’espressione precedente
CreditCard Or Above 5 By Female =
VAR MinQuantity = 5
VAR FilteredSales =
FILTER(
Sales,
(Sales[Quantity] > MinQuantity || Sales[Payment] = "Credit card")
&& Sales[Gender] = "Female"
)
VAR Result = COUNTROWS(FilteredSales)
RETURN
ResultOfferto da
Questa volta, quantità minima, filtro e risultato sono memorizzati come variabili. Come nel principio matematico BODMAS che dà priorità alle operazioni tra parentesi, anche DAX dà priorità alle condizioni tra parentesi.
Nell’esempio sopra, l’operatore OR || viene valutato prima dell’operatore AND && perché è all’interno di una parentesi. Ciò implica che gli ordini con quantità superiore a 5 o pagati con carta di credito sono filtrati per primi, prima di filtrare gli ordini di clienti donne.
COUNTIF() tra tabelle correlate
Se lavori con più di una tabella, puoi usare COUNTROWS() o COUNTA() per contare il numero di record in base a una condizione soddisfatta nell’altra tabella, tramite la funzione RELATEDTABLE().
La funzione RELATEDTABLE() tiene conto della relazione di modello tra due tabelle, che può essere uno-a-uno o uno-a-molti.
Supponiamo di avere un’altra tabella vendite chiamata Sales2, che usa gli stessi dati del supermercato. E Sales e Sales2 sono correlate tramite Invoice ID.
Relazione tra le tabelle Sales e Sales2. Immagine dell’autore.
Puoi usare la sintassi DAX seguente per vedere quanti clienti sono membri, supponendo che Sales non abbia la colonna Customer type ma Sales2 sì.
Orders by members =
COUNTROWS(FILTER(RELATEDTABLE(Sales2), Sales2[Customer Type] = "Member"))Offerto da
Numero di ordini da clienti che sono membri. Immagine dell’autore.
RELATEDTABLE(Sales2) filtra automaticamente Sales2 includendo solo le righe con lo stesso Invoice ID presenti nei dati Sales.
La funzione FILTER() restringe ulteriormente ai soli ordini "Member", mentre COUNTROWS() conta la tabella filtrata.
Casi d’uso pratici e consigli d’integrazione
Ecco alcuni casi d’uso pratici e consigli d’integrazione per implementare COUNTIF() in Power BI.
Scenario reali
Se hai una tabella con risultati di test degli studenti o ordini, puoi usare COUNTROWS() e FILTER() per contare il numero di record ripetuti. Usando la colonna dei punteggi, puoi anche contare quanti studenti sono stati promossi o bocciati. Un altro equivalente importante di COUNTIF() èSUMX(), che puoi usare per sommare i punteggi degli studenti in base a una condizione.
Strumenti di integrazione dati
Invece di caricare ogni volta il tuo foglio di calcolo da Excel o Google Sheets per l’analisi, puoi usare strumenti come Coupler.io per automatizzare l’estrazione dei dati.
Una volta aggiornato il foglio di calcolo, l’aggiornamento si riflette automaticamente nella tua dashboard di Power BI senza dover caricare manualmente il file.
Questo fa sì che Power BI rifletta sempre i dati più recenti senza caricamenti manuali, permettendoti di concentrarti sull’estrazione di insight e sulle decisioni di business. Puoi anche usare questi strumenti esterni per connettere più fonti in un’unica dashboard.
Consigli dall’esperienza per leggibilità e performance
Usa le colonne calcolate quando i calcoli devono essere eseguiti a livello di riga prima delle aggregazioni. Usa una misura quando il calcolo dipende da filtri o slicer selezionati dall’utente, o quando ti serve un valore aggregato invece di calcoli a livello di riga.
Capire il contesto di filtro è fondamentale per sapere quando usare una misura o una colonna calcolata. Il contesto di filtro si applica quando vengono usati slicer, filtri o raggruppamenti, a differenza del contesto di riga, che si applica all’interno della riga di una tabella. Le colonne calcolate usano il contesto di riga e possono creare colonne non necessarie, aumentando l’uso di memoria.
È anche importante considerare il contesto di filtro quando crei misure. Ad esempio, invece di usare SUM(Sales[Amount]), usa CALCULATE(SUM(Sales[Amount])) per controllare il filtraggio. Se hai già un filtro applicato ai dati, con la prima non otterrai il valore corretto, mentre con la seconda vengono ignorati tutti i filtri applicati ai dati.
Evita inoltre di usare troppi iteratori, come FILTER(), in un’unica sintassi DAX, perché rallentano i dataset di grandi dimensioni dato che iterano riga per riga.
Conclusione
Anche se la funzione COUNTIF() nativa di Excel non è presente in Power BI, funzioni DAX come CALCULATE(), COUNTROWS(), COUNTA() e FILTER() permettono di replicarne la logica.
L’approccio da scegliere dipende dalla natura dei tuoi dati. Se hai valori mancanti, valuta l’uso di COUNTA(); se invece i dati sono completi, puoi usare COUNTROWS(). Per escludere filtri esterni applicati ai dati, assicurati di usare ALLEXCEPT() all’interno di CALCULATE().
Ricorda sempre che il tipo di sintassi DAX che scrivi influisce sulla velocità di caricamento dei visual nella dashboard. Cerca di scrivere DAX ottimizzato e di sapere quando usare misure o colonne calcolate. Ecco alcune risorse DataCamp per esplorare tecniche DAX avanzate.
Docente di data science esperto e biostatistico con competenze in Python, R e machine learning.
Power BI Countif() Domande
Power BI ha una funzione COUNTIF() nativa?⌄
Power BI non ha una funzione COUNTIF() nativa, ma esistono vari modi per implementarla in Power BI.
Quali sono le funzioni per implementare COUNTIF() in Power BI?⌄
Le funzioni principali per implementare COUNTIF() in Power BI sono CALCULATE(), COUNTROWS(), COUNTA(), FILTER(), ALLEXCEPT() e RELATEDTABLE(). A seconda del modello dati, puoi combinare queste funzioni per implementare COUNTIF() in Power BI.
Qual è la differenza tra COUNTROWS() e COUNTA()?⌄
COUNTROWS() conta il numero di righe in un dato a prescindere dal fatto che la riga abbia un record valido, mentre COUNTA() conta il numero di record validi in una colonna.
Qual è il vantaggio di usare le misure rispetto alle colonne calcolate?⌄
Le misure sono più efficienti e non utilizzano molto spazio di archiviazione perché sono calcolate al volo, a differenza delle colonne calcolate che aumentano le dimensioni dei dati e quindi consumano spazio.
Quali sono le applicazioni pratiche dell’implementazione di COUNTIF() in Power BI?⌄
L’implementazione di COUNTIF() in Power BI ha molti usi, dal conteggio condizionale dei record alla creazione di colonne condizionali basate sul conteggio, e così via.
Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
La funzione
COUNTIF()è molto usata in Excel perché permette di contare i dati in base a una condizione. Tuttavia, passando a Power BI, molti utenti hanno notato che Power BI non dispone di una funzioneCOUNTIF()nativa.Per fortuna, è possibile replicare la funzionalità di
COUNTIF()usando diverse formule DAX (Data Analysis Expressions). In questo articolo vedrai come ottenere calcoli in Power BI simili aCOUNTIF()usando funzioni DAX comeCALCULATE(),COUNTROWS(),COUNTA()eFILTER().Perché COUNTIF() non esiste in Power BI
A differenza di Excel, basato su formule per celle, Power BI si fonda su calcoli per tabelle e contesto di filtro. Opera su tabelle e sulle loro relazioni, utilizzando DAX per i calcoli.
Invece di fare riferimento a singole celle, DAX lavora con colonne e applica i calcoli in modo dinamico in base al contesto di filtro, determinato da slicer, filtri su righe/colonne e relazioni tra tabelle.
Excel COUNTIF() usa un approccio basato su celle, in cui le formule vengono applicate riga per riga entro un intervallo specificato. L’approccio di Power BI è diverso perché sfrutta le relazioni tra tabelle per affinare i calcoli. Invece di scansionare singole celle, applica filtri basati sul contesto del report tramite DAX.
Implicazioni per gli utenti
Se arrivi a Power BI da Excel, devi adattarti all’approccio di calcolo basato sulle tabelle. Gli approcci DAX, che operano sulle colonne dei dati, sono più efficienti rispetto alle iterazioni riga per riga.
A differenza di Excel, in Power BI devi scegliere il metodo più adatto per replicare
COUNTIF()in base al tuo modello dati. Quindi, come utente, devi disimparare l’abitudine di applicare formule a singole celle e iniziare a pensare in termini di tabelle e contesti di filtro.Funzioni DAX fondamentali per replicare la logica di COUNTIF()
L’approccio per implementare
COUNTIF()in Power BI dipende da fattori come le relazioni tra tabelle, la presenza o meno di valori mancanti nei dati, la dimensione del dataset e così via. Alcune funzioni DAX sono meglio ottimizzate per elaborazioni più rapide ed efficienti.Panoramica delle funzioni chiave
Le funzioni DAX servono per creare colonne calcolate, misure e tabelle. Ecco alcune funzioni DAX che ti aiuteranno a replicare la funzionalità di
COUNTIF()in Power BI.CALCULATE(): Questa funzione modifica il contesto di filtro per un’espressione e consente di applicare nuovi filtri o modificare quelli esistenti in modo dinamico. Ad esempio, puoi usarla per calcolare le vendite totali di una determinata area.COUNTROWS(): Conta il numero di righe in una tabella specificata e, in combinazione con funzioni di filtro, consente di contare solo determinate righe. Un esempio è contare gli ordini di vendita superiori a 1.000 $.COUNTA(): Conta i valori non vuoti in una colonna, utile quando si hanno dati mancanti. Ad esempio, puoi contare gli ID cliente non vuoti, assicurandoti di considerare solo i record validi.FILTER(): Di solito usata conCALCULATE()eCOUNTROWS(), restituisce una tabella in base a una condizione. Per esempio, puoi restituire una tabella con ordini di vendita superiori a 500 $.ALLEXCEPT(): Rimuove tutti i filtri applicati tranne quelli specificati; ad esempio, puoi restituire una tabella con le vendite totali per area anche se sono attivi slicer o filtri sulla tabella. È importante quando lavori con aggregazioni su gerarchie.RELATEDTABLE(): Restituisce una tabella basata su relazioni esistenti. Un esempio è contare il numero di ordini per ciascun cliente sfruttando le relazioni dai dati cliente.Come lavorano insieme
Poiché
COUNTROWS()conta il numero di righe in una tabella, puoi restituire una tabella dei tuoi dati che rispetta una condizione usandoFILTER(). Poi usaCALCULATE()per modificare il contesto di filtro, assicurando cheCOUNTROWS()consideri solo le righe che soddisfano la condizione. Ecco un esempio di sintassi DAX che mostra come funziona.La funzione
CALCULATE()è in un certo senso come combinare due espressioni diverse. Invece di usareCOUNTROWS()per contare tutti i dati,CALCULATE()lo limita al contesto di filtro derivato conFILTER().Esempi base di equivalenti di COUNTIF() in Power BI
Prima di mostrarti alcuni esempi su come implementare
COUNTIF()in Power BI, assicurati di caricare i dati di vendite del supermercato.Esempio 1: Numero di ordini da clienti donne
La sintassi DAX qui sotto calcola il numero di ordini effettuati da clienti di sesso femminile.
Numero di ordini da clienti donne. Immagine dell’autore.
FILTER(Sales, Sales[Gender] = "Female")filtra gli ordini per clienti di sesso femminile.COUNTROWS(Sales), invece di contare tutti i dati, conta la tabella filtrata grazie all’influenza diCALCULATE().Esempio 2: Conteggio degli ordini per città
Di seguito una sintassi DAX per contare il numero di ordini per ciascuna città.
Numero di ordini per città. Immagine dell’autore.
COUNTA(Sales[City])conta i valori non vuoti nella colonna City.ALLEXCEPT(Sales, Sales[City])rimuove tutti i filtri tranne la colonnaCitydalla tabella Sales.CALCULATE()fa sì cheCOUNTA()sia calcolata separatamente per ciascuna città, comportandosi come unCOUNTIF()di Excel.Esempio 3: Metodo alternativo con COUNTROWS
Un’alternativa è usare la sintassi DAX qui sotto, che impiega
COUNTROWS()invece diCOUNTA().COUNTROWS()conta il numero di righe nella tabellaSalesindipendentemente dalla presenza di valori vuoti.Se la colonna
Cityè vuota, entrambi gli approcci restituiranno gli stessi risultati. Tuttavia, se nella colonnaCityci sono valori mancanti,COUNTA()li esclude, mentreCOUNTROWS()li include.Dovresti usare
COUNTROWS()quando ogni riga rappresenta un record, come un ordine di vendita. Ma se i tuoi dati contengono alcuni record non validi, puoi usareCOUNTA(), che conta solo i record con un valore valido.Uso delle misure per calcoli dinamici
Capita di dover creare misure che cambiano dinamicamente in base a un filtro di tabella o a uno slicer. Questa sezione mostra come implementare
COUNTIF()in tali scenari.Scenario: conteggio degli ordini ad alto valore
Ecco un esempio in cui ci interessa conoscere gli ordini con quantità totale superiore a cinque.
Numero di ordini ad alto valore. Immagine dell’autore.
FILTER(Sales, Sales[Quantity] > 5)restituisce gli ordini con quantità superiore a cinque.COUNTROWS()conta le righe nella tabella filtrata con ordini superiori a cinque.A differenza delle colonne calcolate che, una volta create, aumentano l’archiviazione e la dimensione del modello, le misure vengono calcolate solo quando servono, risultando più efficienti. La sintassi DAX per creare una colonna calcolata sarebbe così:
Colonna calcolata
High Value. Immagine dell’autore.Questo memorizzerebbe un 1 o 0 statico in ogni riga. Per contare gli ordini ad alto valore, dovresti creare una misura usando
SUM(Sales[High Value]).Immagina di creare colonne calcolate per ogni filtro. Aumenterebbe l’uso di archiviazione e ridurrebbe la flessibilità.
Ecco una tabella che mostra perché dovresti preferire le misure alle colonne calcolate.
Measure
Calculated Column
Calcolata al momento della query, risponde ai filtri
Statica, calcolata quando i dati vengono caricati/aggiornati
Più efficiente, calcolata solo quando serve
Consuma spazio e aumenta la dimensione del modello
Si adatta dinamicamente in base a filtri, slicer e visual
I valori restano invariati finché i dati non vengono aggiornati.
Tecniche avanzate e condizioni multiple
In Excel,
COUNTIFS()supporta condizioni multiple, cosa che puoi replicare anche in Power BI.Criteri multipli / logica COUNTIFS()
Ecco una sintassi DAX per contare gli ordini con quantità superiore a cinque, pagati con carta di credito.
Numero di ordini con quantità superiore a cinque e pagati con carta di credito. Immagine dell’autore.
La formula filtra la tabella
Salesdove la quantità supera 5 e il metodo di pagamento è carta di credito.&&rappresenta l’operatore AND, assicurando che vengano contati gli ordini che soddisfano entrambe le condizioni.Se ti interessano gli ordini che soddisfano almeno una delle condizioni, usa l’operatore OR, rappresentato da
||in DAX.Numero di ordini con quantità superiore a cinque o pagati con carta di credito. Immagine dell’autore.
Uso di operatori logici e variabili
La sintassi DAX che replica
COUNTIF()a volte può diventare complessa. Usare variabili aiuta la leggibilità e garantisce che le condizioni siano valutate nell’ordine desiderato. Evita anche calcoli ridondanti memorizzando i valori una sola volta.Ecco un altro esempio che mostra come contare il numero di ordini effettuati da clienti donne, pagati con carta di credito oppure con quantità superiore a cinque, usando variabili.
Numero di ordini da clienti donne pagati con carta di credito o con quantità superiore a cinque. Immagine dell’autore.
Il filtro è memorizzato in una variabile usata in
COUNTROWS(). Ecco un altro modo di scrivere l’espressione precedenteQuesta volta, quantità minima, filtro e risultato sono memorizzati come variabili. Come nel principio matematico BODMAS che dà priorità alle operazioni tra parentesi, anche DAX dà priorità alle condizioni tra parentesi.
Nell’esempio sopra, l’operatore OR
||viene valutato prima dell’operatore AND&&perché è all’interno di una parentesi. Ciò implica che gli ordini con quantità superiore a 5 o pagati con carta di credito sono filtrati per primi, prima di filtrare gli ordini di clienti donne.COUNTIF() tra tabelle correlate
Se lavori con più di una tabella, puoi usare
COUNTROWS()oCOUNTA()per contare il numero di record in base a una condizione soddisfatta nell’altra tabella, tramite la funzioneRELATEDTABLE().La funzione
RELATEDTABLE()tiene conto della relazione di modello tra due tabelle, che può essere uno-a-uno o uno-a-molti.Supponiamo di avere un’altra tabella vendite chiamata
Sales2, che usa gli stessi dati del supermercato. ESaleseSales2sono correlate tramiteInvoice ID.Relazione tra le tabelle
SaleseSales2. Immagine dell’autore.Puoi usare la sintassi DAX seguente per vedere quanti clienti sono membri, supponendo che
Salesnon abbia la colonnaCustomer typemaSales2sì.Numero di ordini da clienti che sono membri. Immagine dell’autore.
RELATEDTABLE(Sales2)filtra automaticamenteSales2includendo solo le righe con lo stessoInvoice IDpresenti nei datiSales.La funzione
FILTER()restringe ulteriormente ai soli ordini"Member", mentreCOUNTROWS()conta la tabella filtrata.Casi d’uso pratici e consigli d’integrazione
Ecco alcuni casi d’uso pratici e consigli d’integrazione per implementare
COUNTIF()in Power BI.Scenario reali
Se hai una tabella con risultati di test degli studenti o ordini, puoi usare
COUNTROWS()eFILTER()per contare il numero di record ripetuti. Usando la colonna dei punteggi, puoi anche contare quanti studenti sono stati promossi o bocciati. Un altro equivalente importante diCOUNTIF()è SUMX(), che puoi usare per sommare i punteggi degli studenti in base a una condizione.Strumenti di integrazione dati
Invece di caricare ogni volta il tuo foglio di calcolo da Excel o Google Sheets per l’analisi, puoi usare strumenti come Coupler.io per automatizzare l’estrazione dei dati.
Una volta aggiornato il foglio di calcolo, l’aggiornamento si riflette automaticamente nella tua dashboard di Power BI senza dover caricare manualmente il file.
Questo fa sì che Power BI rifletta sempre i dati più recenti senza caricamenti manuali, permettendoti di concentrarti sull’estrazione di insight e sulle decisioni di business. Puoi anche usare questi strumenti esterni per connettere più fonti in un’unica dashboard.
Consigli dall’esperienza per leggibilità e performance
Usa le colonne calcolate quando i calcoli devono essere eseguiti a livello di riga prima delle aggregazioni. Usa una misura quando il calcolo dipende da filtri o slicer selezionati dall’utente, o quando ti serve un valore aggregato invece di calcoli a livello di riga.
Capire il contesto di filtro è fondamentale per sapere quando usare una misura o una colonna calcolata. Il contesto di filtro si applica quando vengono usati slicer, filtri o raggruppamenti, a differenza del contesto di riga, che si applica all’interno della riga di una tabella. Le colonne calcolate usano il contesto di riga e possono creare colonne non necessarie, aumentando l’uso di memoria.
È anche importante considerare il contesto di filtro quando crei misure. Ad esempio, invece di usare
SUM(Sales[Amount]), usaCALCULATE(SUM(Sales[Amount]))per controllare il filtraggio. Se hai già un filtro applicato ai dati, con la prima non otterrai il valore corretto, mentre con la seconda vengono ignorati tutti i filtri applicati ai dati.Evita inoltre di usare troppi iteratori, come
FILTER(), in un’unica sintassi DAX, perché rallentano i dataset di grandi dimensioni dato che iterano riga per riga.Conclusione
Anche se la funzione
COUNTIF()nativa di Excel non è presente in Power BI, funzioni DAX comeCALCULATE(),COUNTROWS(),COUNTA()eFILTER()permettono di replicarne la logica.L’approccio da scegliere dipende dalla natura dei tuoi dati. Se hai valori mancanti, valuta l’uso di
COUNTA(); se invece i dati sono completi, puoi usareCOUNTROWS(). Per escludere filtri esterni applicati ai dati, assicurati di usareALLEXCEPT()all’interno diCALCULATE().Ricorda sempre che il tipo di sintassi DAX che scrivi influisce sulla velocità di caricamento dei visual nella dashboard. Cerca di scrivere DAX ottimizzato e di sapere quando usare misure o colonne calcolate. Ecco alcune risorse DataCamp per esplorare tecniche DAX avanzate.