• Power BI e DAX
  • Group By in Power BI - quando usare Power Query o DAX

Group By in Power BI - quando usare Power Query o DAX

Bruno De luca 14 agosto 2026
Modello dati Power BI con tabelle correlate: Sales, Customer, Product, Reseller, Date e Sales Territory. La tabella Sales contiene la misura "MovingAverageThreeMonths".

Indice

Hai una tabella con migliaia di righe, ma il report deve mostrare vendite per regione, mese o categoria? In Power BI il comando Group By permette di ridurre il dettaglio e ottenere rapidamente totali, medie, conteggi e altre aggregazioni. Qui mostro come usarlo in Power Query, quando preferire DAX con GROUPBY, quali differenze considerare e quali errori evitare per mantenere il modello affidabile.

La scelta del livello giusto rende il modello più semplice

  • Power Query raggruppa i dati durante la preparazione, prima che entrino nel modello.
  • Il comando consente di usare somma, media, conteggio, minimo, massimo e mediana.
  • L’opzione Avanzate permette di raggruppare per più colonne e creare più aggregazioni nello stesso passaggio.
  • In DAX, GROUPBY è utile soprattutto per aggregare risultati intermedi di espressioni tabellari.
  • Raggruppare cambia la granularità dei dati: le righe originali possono non essere più disponibili.

Mappa del Customer Journey creata con Power BI, mostra le fasi di interazione del cliente, dall'awareness alla loyalty, con dati aggregati.

Il Group By in Power Query riduce il livello di dettaglio

In Power Query, raggruppare significa trasformare molte righe in una riga per ogni combinazione di valori scelta. Se una tabella contiene le transazioni di vendita, posso raggrupparla per Regione e ottenere il totale venduto per ciascuna area, invece di lavorare su ogni singolo ordine.

Questo passaggio avviene prima del caricamento nel modello semantico. È quindi una trasformazione dei dati, non una misura che cambia risultato in base ai filtri selezionati dall’utente. La differenza sembra sottile, ma ha conseguenze importanti sulle prestazioni e sulle analisi future.

Le operazioni più comuni sono Somma, Media, Mediana, Minimo, Massimo e Conteggio righe. Si possono anche contare i valori distinti oppure mantenere tutte le righe di ciascun gruppo con l’opzione Tutte le righe, che crea una tabella annidata dentro ogni cella.

Operazione Risultato Esempio pratico
Somma Totale di una colonna numerica Ricavi per regione
Media Valore medio del gruppo Prezzo medio per categoria
Conteggio righe Numero di record Ordini per cliente
Conteggio valori distinti Numero di elementi unici Clienti per area
Tutte le righe Tabella annidata con i record originali Dettaglio dei prodotti per gruppo

La mia regola è semplice: uso Power Query quando il raggruppamento rappresenta una preparazione stabile del dataset. Se invece il risultato deve reagire a slicer, filtri, calendario o selezioni dell’utente, lascio i dati a un livello più dettagliato e calcolo l’aggregazione con DAX.

Come configurare il raggruppamento passo dopo passo

Per iniziare, in Power BI Desktop apro Trasforma dati e accedo all’Editor di Power Query. Seleziono una o più colonne, poi scelgo Raggruppa per dalla scheda Home o Trasforma. Il comando è disponibile anche nel menu visualizzato con il tasto destro sulle colonne selezionate.

  1. Scelgo la colonna o le colonne che definiscono il gruppo.
  2. Seleziono Avanzate quando servono più criteri.
  3. Assegno un nome alla nuova colonna aggregata.
  4. Scelgo l’operazione, per esempio Somma o Conteggio righe.
  5. Indico la colonna numerica da aggregare, se richiesta.
  6. Confermo e controllo il risultato nella griglia di anteprima.

Immaginiamo una tabella chiamata Vendite con le colonne Regione, Canale, Prodotto e Importo. Per ottenere il fatturato per regione e canale, uso l’opzione Avanzate, raggruppo per Regione e Canale, quindi aggiungo la somma di Importo con il nome Fatturato totale.

Il risultato avrà una riga per ogni combinazione disponibile. Una regione con tre canali non produrrà tre colonne, ma tre righe aggregate. Questo è il comportamento corretto, anche se chi arriva da Excel può aspettarsi una struttura più simile a una tabella pivot.

Un esempio con più aggregazioni

Nello stesso passaggio posso creare più colonne. Per ogni Regione posso calcolare il totale degli importi, il numero di ordini e il prezzo medio, ottenendo una tabella compatta per un report direzionale.

Regione | Fatturato totale | Numero ordini | Prezzo medio
Nord    | 245000           | 1280          | 191,41
Centro  | 198500           | 1042          | 190,50
Sud     | 162300           | 987           | 164,27

Questa soluzione è molto efficiente quando il dettaglio dell’ordine non serve più. Se però domani voglio analizzare il margine per prodotto o filtrare per singolo cliente, avrò eliminato informazioni necessarie. Prima di confermare, mi chiedo sempre se sto creando una tabella finale o solo una base intermedia per altre analisi.

Quando usare Tutte le righe

L’opzione Tutte le righe è utile per mantenere i record appartenenti a ogni gruppo. Da queste tabelle annidate posso poi estrarre, per esempio, il prodotto con più unità vendute usando una colonna personalizzata e una funzione come Table.Max.

È una tecnica potente, ma non la scelgo per semplice abitudine. Le colonne con valori [Table] possono rendere il flusso più difficile da leggere e richiedere passaggi aggiuntivi per espandere i dati. Ha senso soprattutto quando devo applicare un’analisi specifica all’interno di ciascun gruppo.

Quando DAX GROUPBY è la scelta migliore

La funzione DAX GROUPBY restituisce una tabella raggruppata a partire da un’altra tabella o da un’espressione che produce una tabella. Il suo punto di forza è CURRENTGROUP, che rappresenta le righe appartenenti al gruppo elaborato in quel momento.

La uso soprattutto quando ho già creato un risultato intermedio e devo eseguire una seconda aggregazione. Per esempio, posso calcolare prima le vendite per Paese e Categoria, poi individuare il valore massimo di categoria all’interno di ogni Paese.

VAR VenditePerCategoria =
    SUMMARIZECOLUMNS(
        Geografia[Paese],
        Prodotti[Categoria],
        "Vendite totali", SUMX(
            Vendite,
            Vendite[Prezzo] * Vendite[Quantità]
        )
    )

RETURN
    GROUPBY(
        VenditePerCategoria,
        Geografia[Paese],
        "Massimo per Paese",
        MAXX(CURRENTGROUP(), [Vendite totali])
    )

Il dettaglio tecnico più importante è che GROUPBY non applica automaticamente CALCULATE alle colonne aggiunte. Di conseguenza, il contesto di filtro non si comporta esattamente come in una misura tradizionale. Se non si conosce bene la differenza tra contesto di riga e contesto di filtro, il risultato può sembrare inspiegabile.

Per aggregazioni ordinarie sulle tabelle fisiche del modello preferisco spesso SUMMARIZECOLUMNS o misure DAX più semplici. GROUPBY dà il meglio di sé su risultati intermedi, non come sostituto automatico di ogni operazione di raggruppamento.

Leggi anche: DATEADD DAX per confrontare periodi in Power BI

Una misura dinamica resta spesso preferibile

Se devo mostrare il fatturato filtrato per anno, regione e categoria, una misura come questa è generalmente più adatta:

Fatturato totale =
SUMX(
    Vendite,
    Vendite[Prezzo] * Vendite[Quantità]
)

La misura viene ricalcolata in base al contesto del visual. Una tabella aggregata creata in Power Query, invece, non ricostruisce il dettaglio quando l’utente modifica i filtri. Per questo separo con attenzione le trasformazioni strutturali dalle calcolazioni dinamiche del report.

Power Query, DAX e raggruppamento nei visual a confronto

Le tre modalità possono sembrare equivalenti perché producono tutte un risultato raggruppato. In realtà lavorano in momenti diversi e rispondono a esigenze diverse. La scelta giusta dipende soprattutto da quando voglio calcolare il risultato e da quanto deve essere flessibile.

Metodo Quando lavora Punto di forza Limite principale
Power Query Group By Durante la preparazione Riduce il volume e semplifica i dati Non reagisce ai filtri del report
DAX GROUPBY Nel modello o in un’espressione tabellare Gestisce aggregazioni su risultati intermedi Richiede comprensione del contesto DAX
Misure DAX Quando il visual viene valutato Risultati dinamici e interattivi Possono diventare complesse su modelli poco puliti
Raggruppamento del visual Nel report Utile per fasce, bin e presentazione Non sostituisce la modellazione dei dati

Nel report posso anche creare bin, cioè fasce numeriche come 0-99, 100-199 e 200-299, oppure gruppi manuali di categorie. È una soluzione comoda per la visualizzazione, ma non modifica realmente la tabella sorgente e non risolve problemi di qualità dei dati.

Quando preparo un modello per altri analisti, preferisco rendere esplicita la logica in Power Query o nelle misure. I gruppi creati direttamente nel visual sono rapidi, ma possono diventare difficili da governare quando lo stesso criterio deve essere riutilizzato in più pagine.

Gli errori che falsano il risultato

Il primo errore è raggruppare usando una colonna con valori apparentemente uguali ma scritti in modo diverso. “Milano”, “milano” e “Milano ” possono essere trattati come valori differenti, a seconda della trasformazione e del tipo di confronto. Prima del Group By conviene pulire spazi, maiuscole, codici e valori nulli.

Un secondo problema nasce dai duplicati introdotti da una relazione o da una combinazione di tabelle. Se una vendita viene duplicata dopo un merge, la somma sembrerà corretta dal punto di vista tecnico ma sarà economicamente gonfiata. Controllo sempre il numero di righe prima e dopo le operazioni di unione.

Un terzo errore è usare la media di una colonna già aggregata. La media dei ricavi giornalieri non equivale necessariamente al ricavo medio per ordine. Bisogna definire con precisione il denominatore e capire se si sta calcolando una media semplice o ponderata.

  • Controllare il tipo di dati delle colonne numeriche.
  • Verificare la presenza di null e valori vuoti.
  • Confrontare il totale prima e dopo il raggruppamento.
  • Indicare chiaramente se un conteggio riguarda righe, clienti o valori distinti.
  • Non eliminare il dettaglio originale prima di aver verificato i requisiti del report.

Per grandi volumi, controllo anche il folding della query, cioè la possibilità che Power Query trasferisca la trasformazione al database di origine. Quando il raggruppamento viene eseguito dal sistema sorgente, spesso si riduce il lavoro locale, ma il risultato dipende dal connettore e dalla struttura della query.

Una regola pratica per scegliere senza rifare il modello

Se il risultato deve essere sempre lo stesso e il dettaglio non serve, raggruppo in Power Query. Se devo reagire a filtri e selezioni, creo una misura DAX. Se parto da una tabella intermedia e devo calcolare aggregazioni sui gruppi già formati, considero GROUPBY con CURRENTGROUP.

Prima di applicare il comando, scrivo una frase molto concreta: “voglio una riga per ogni...”. Se la frase termina con “regione e mese”, quelle sono le colonne di raggruppamento. Se invece la risposta cambia in base all’utente, al periodo o al filtro selezionato, probabilmente non devo comprimere i dati in Power Query.

Il Group By non è soltanto un pulsante per ottenere un totale. È una decisione sulla granularità del modello, sulla memoria utilizzata e sul tipo di analisi che sarà possibile fare in seguito. Una scelta corretta all’origine evita formule DAX inutilmente complicate e rende i report Power BI più leggibili, veloci e facili da mantenere.

Domande frequenti

Power Query è adatto quando il raggruppamento è una preparazione stabile del dataset e il dettaglio originale non serve più. Se il risultato deve reagire a filtri, slicer, calendario o selezioni dell’utente, è preferibile mantenere i dati dettagliati e usare una misura DAX.

Nell’Editor di Power Query seleziona le colonne, scegli Raggruppa per e attiva Avanzate. Puoi raggruppare, per esempio, per Regione e Canale, quindi creare nello stesso passaggio il Fatturato totale, il numero di ordini e il prezzo medio.

GROUPBY è utile soprattutto per aggregare una tabella intermedia o un’espressione tabellare già elaborata. CURRENTGROUP rappresenta le righe del gruppo corrente, ma GROUPBY non applica automaticamente CALCULATE alle colonne aggiunte, quindi occorre prestare attenzione al contesto di riga e al contesto di filtro.

Prima del Group By bisogna pulire spazi, maiuscole, codici e valori nulli e controllare i tipi numerici. È inoltre necessario verificare che merge o relazioni non abbiano duplicato le vendite, confrontare i totali prima e dopo e distinguere tra media semplice, media ponderata, conteggio delle righe e conteggio dei valori distinti.

Valuta l'articolo

Valutazione: 0.00 Numero di voti: 0

Tag

power query
dax
aggregazioni
groupby
granularità
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