Vai al contenuto principale

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.
Aggiornato 29 set 2026  · 11 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

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)
)

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")
)

Immagine che mostra il numero totale di ordini da clienti donne.

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]))

Immagine che mostra il numero totale di ordini per città.

Numero di ordini per città. Immagine dell’autore.

  • 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]))

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))

Immagine che mostra il numero di ordini ad alto valore.

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)

Immagine che mostra la colonna calcolata high value. Immagine dell’autore.

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. 

Quantity Above 5 and Credit Card = 
COUNTROWS(
    FILTER(
        Sales, 
        Sales[Quantity] > 5 && Sales[Payment] = "Credit card"
    )
)

Immagine che mostra il numero di ordini con quantità superiore a cinque e 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.

Quantity Above 5 or Credit Card = 
COUNTROWS(
    FILTER(
        Sales, 
        Sales[Quantity] > 5 || Sales[Payment] = "Credit card"
    )
)

Immagine che mostra gli ordini con quantità superiore a cinque o pagati con carta di credito.

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)

Immagine che mostra il numero di ordini da clienti donne pagati con carta di credito o con quantità superiore a cinque.

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 
    Result

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. 

Immagine che mostra la relazione tra le tabelle Sales e Sales2.

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"))

Immagine che mostra il numero totale di ordini da clienti che sono membri

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. 


Adejumo Ridwan Suleiman's photo
Author
Adejumo Ridwan Suleiman
LinkedIn

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.

Argomenti
Power BI
Analisi dei dati

Impara con DataCamp

Corso

Introduzione a DAX in Power BI

3 ore
186.9K
Migliora le tue conoscenze di Power BI imparando i fondamenti delle Data Analysis Expressions, tra cui colonne calcolate, tabelle e misure.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

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.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro