Funzione GROUPBY per fogli Excel e sistemi di business intelligence

GROUPBY

Data Analysis Expressions (DAX) è una libreria di funzioni e operatori che possono essere combinati per creare formule ed espressioni in Power BI, Analysis Services e Power Pivot nei modelli di dati di Excel.

Power BI supporta più di 200 tipi di funzioni DAX come: Funzioni di data e ora, funzioni filtro, funzioni testo, funzioni logiche, funzioni di time intelligence, funzioni matematiche e così via.

Tra le funzioni principali da conoscere non possono mancare le funzioni “Table Manipulation”, ossia di manipolazione delle tabelle!

Entriamo nel dettaglio con la funzione GROUPBY.

Restituisce una tabella con un set di colonne selezionate. Rientra nella categoria delle funzioni DAX di manipolazione delle tabelle.

GROUP BY consente di utilizzare la funzione DAX CURRENTGROUP all’interno delle funzioni di aggregazione nelle colonne di estensione selezionate e riutilizzare i dati che sono stati raggruppati rendendo la nuova tabella altamente performante.


Sintassi:

                   SUMMARIZE (<tabella>, <groupBy_columnName>, <nome>, <espressione>…)

Descrizione:

 PARAMETRODESCRIZIONE
1tabellaQualsiasi espressione DAX che restituisce una tabella
2groupBy_columnName(Facoltativo) Una colonna in base alla quale raggruppare.
3NomeIl nome assegnato a una colonna totale o riepilogativa, racchiuso tra virgolette.
4EspressioneQualsiasi espressione DAX che restituisce un singolo valore scalare, in cui l’espressione deve essere valutata per ogni set di valori GroupBy.

Iniziamo con un esempio, è possibile scaricare il Dataset di prova dal seguente link

https://www.microsoft.com/it-IT/download/details.aspx?id=18279

Nota:

  1. L’espressione utilizzata in GroupBy può includere una qualsiasi delle funzioni di aggregazione “X”, come SUMX, AVERAGEX, MINX, MAXX, ecc.
  2. La funzione DAX CALCULATE e i campi calcolati non sono consentiti nell’espressione.
  3. groupBy_columnName deve trovarsi in una tabella o in una tabella correlata.
  4. Ogni nome deve essere racchiuso tra virgolette doppie.
  5. Questa funzione non è supportata per l’uso in modalità DirectQuery se utilizzata nelle colonne calcolate o nelle regole di sicurezza a livello di riga (RLS).
  6. La funzione CURRENTGROUP può essere utilizzata solo in un’espressione che definisce una colonna all’interno della funzione GROUPBY.

Passaggio 1: vai alla scheda Modellazione e fai clic su Nuova tabella

Passaggio 2:   dopodiché, verrà visualizzata una schermata della formula DAX, qui scriveremo la formula DAX per la funzione GROUPBY .

Quindi ora creiamo la tabella riepilogativa.

    GROUPBY(SalesOrderDetail,
SalesOrderDetail[Regione],
SalesOrderDetail[Subcategory],
"Prezzo Totale", SUMX(CURRENTGROUP(), SalesOrderDetail[LineTotal])

Passaggio 3: dopo aver fatto clic per eseguire il commit, verrà creata una nuova tabella con il nome Groupby Table e sotto quella tabella vedrai il risultato come di seguito.

È possibile eseguire anche una nidificazione nell’espressione

Groupby Table Nidificata =
GROUPBY(
    GROUPBY(SalesOrderDetail,
SalesOrderDetail[Regione],
SalesOrderDetail[Subcategory],
"Prezzo Totale", SUMX(CURRENTGROUP(), SalesOrderDetail[LineTotal])
),
SalesOrderDetail[Regione],
"MAX TOTALE",MAXX(CURRENTGROUP(),[Prezzo Totale]))

È possibile eseguire anche filtro nell’espressione

Groupby Table Filtro =
filter(
    GROUPBY(SalesOrderDetail,
SalesOrderDetail[Regione],
SalesOrderDetail[Subcategory],
"Prezzo Totale", SUMX(CURRENTGROUP(), SalesOrderDetail[LineTotal])
),SalesOrderDetail[Regione] = "Australia")

È possibile eseguire anche ADDCOLUMNS nell’espressione, supportando CALCULATE

Groupby Table addcolumns =
ADDCOLUMNS(
    GROUPBY(SalesOrderDetail,
SalesOrderDetail[Regione],
SalesOrderDetail[Subcategory]),
"Prezzo Totale", calculate(SUM(SalesOrderDetail[LineTotal])))

È possibile eseguire anche ADDCOLUMNS nell’espressione, supportando CALCULATE e FILTER

Groupby Table addcolumns e filtro =
FILTER(
    ADDCOLUMNS(
    GROUPBY(SalesOrderDetail,
SalesOrderDetail[Regione],
SalesOrderDetail[Subcategory]),
"Prezzo Totale", calculate(SUM(SalesOrderDetail[LineTotal]))),
SalesOrderDetail[Regione] = "Australia")

Articoli simili