GROUPBY
Nota
Questa funzione è sconsigliata per l'uso nei calcoli visivi perché probabilmente restituisce risultati senza significato.
La funzione GROUPBY è simile alla funzione SUMMARIZE. Tuttavia, GROUPBY non esegue un CALCULATE implicito per le colonne di estensione aggiunte. GROUPBY consente l'uso di una nuova funzione, CURRENTGROUP, all'interno delle funzioni di aggregazione nelle colonne di estensione aggiunte. GROUPBY viene usato per eseguire più aggregazioni in una singola analisi di tabella.
Sintassi
GROUPBY (<table> [, <groupBy_columnName> [, <groupBy_columnName> [, …]]] [, <name>, <expression> [, <name>, <expression> [, …]]])
Parametri
Termine | Definizione |
---|---|
table |
Qualsiasi espressione DAX che restituisce una tabella di dati. |
groupBy_columnName |
Nome di una colonna esistente nella tabella (o in una tabella correlata) in base alla quale i dati devono essere raggruppati. Questo parametro non può essere un'espressione. |
name |
Nome assegnato a una nuova colonna da aggiungere all'elenco di colonne GroupBy, racchiuso tra virgolette doppie. |
expression |
Una delle funzioni di aggregazione X con il primo argomento da CURRENTGROUP(). Per l'elenco completo delle funzioni di aggregazione X supportate, vedere la sezione Con CURRENTGROUP di seguito. |
Valore restituito
Tabella con le colonne selezionate per gli argomenti groupBy_columnName e le colonne di estensione designate dagli argomenti del nome.
Osservazioni
La funzione GROUPBY esegue le operazioni seguenti:
Iniziare con la tabella specificata (e tutte le tabelle correlate nella direzione "to-one").
Creare un raggruppamento usando tutte le colonne GroupBy (necessarie per esistere nella tabella dal passaggio 1.).
Ogni gruppo è una riga nel risultato, ma rappresenta un set di righe nella tabella originale.
Per ogni gruppo, valutare le colonne di estensione da aggiungere. A differenza della funzione SUMMARIZE, non viene eseguita una CALCULATE implicita e il gruppo non viene inserito nel contesto di filtro.
Ogni colonna per cui si definisce un nome deve avere un'espressione corrispondente; in caso contrario, viene restituito un errore. Il primo argomento, name, definisce il nome della colonna nei risultati. Il secondo argomento, espressione, definisce il calcolo eseguito per ottenere il valore per ogni riga in tale colonna.
groupBy_columnName
deve essere in tabella o in una tabella correlata.Ogni nome deve essere racchiuso tra virgolette doppie.
La funzione raggruppa un set selezionato di righe in un set di righe di riepilogo in base ai valori di una o più colonne groupBy_columnName. Viene restituita una riga per ogni gruppo.
GROUPBY viene usato principalmente per eseguire aggregazioni sui risultati intermedi di DAX espressioni di tabella. Per aggregazioni efficienti sulle tabelle fisiche nel modello, è consigliabile usare SUMMARIZECOLUMNS o SUMMARIZE funzione.
Questa funzione non è supportata per l'uso in modalità DirectQuery quando viene usata nelle colonne calcolate o nelle regole di sicurezza a livello di riga.
Con CURRENTGROUP
CURRENTGROUP può essere usato solo in un'espressione che definisce una colonna di estensione all'interno della funzione GROUPBY. In effetti, CURRENTGROUP restituisce un set di righe dall'argomento tabella di GROUPBY che appartengono alla riga corrente del risultato GROUPBY. La funzione CURRENTGROUP non accetta argomenti ed è supportata solo come primo argomento per una delle funzioni di aggregazione seguenti: AVERAGEX, COUNTAX, COUNTX, GEOMEANX, MAXX, MINX, PRODUCTX, STDEVX.S, STDEVX.P, SUMX, VARX.S, VARX.P.
Esempio
Nell'esempio seguente vengono prima calcolate le vendite totali raggruppate per paese e categoria di prodotti su tabelle fisiche usando la funzione SUMMARIZECOLUMNS. Usa quindi la funzione GROUPBY per analizzare il risultato intermedio del primo passaggio per trovare le vendite massime in ogni paese nelle categorie di prodotti.
DEFINE
VAR SalesByCountryAndCategory =
SUMMARIZECOLUMNS(
Geography[Country],
Product[Category],
"Total Sales", SUMX(Sales, Sales[Price] * Sales[Qty])
)
EVALUATE
GROUPBY(
SalesByCountryAndCategory,
Geography[Country],
"Max Sales", MAXX(CURRENTGROUP(), [Total Sales])
)