GROUPBY
Si applica a: Calcolo visivo misura tabella calcolata colonna calcolata
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 alcuna funzione CALCULATE implicita per le colonne di estensione che aggiunge. GROUPBY consente di usare una nuova funzione, CURRENTGROUP, all'interno delle funzioni di aggregazione nelle colonne di estensione che aggiunge. La funzione GROUPBY viene usata per eseguire più aggregazioni in un'unica 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 devono essere raggruppati i dati. Questo parametro non può essere un'espressione. |
name | Nome assegnato a una nuova colonna che viene aggiunta all'elenco delle colonne GroupBy, racchiuso tra virgolette doppie. |
expression | Una delle funzioni di aggregazione X il cui primo argomento è CURRENTGROUP(). Per l'elenco completo delle funzioni di aggregazione X supportate, vedere la sezione Con CURRENTGROUP di seguito. |
Valore restituito
Una tabella con le colonne selezionate per gli argomenti groupBy_columnName e le colonne di estensione designate dagli argomenti name.
Osservazioni:
La funzione GROUPBY esegue le azioni seguenti:
Inizia con la tabella specificata (e tutte le tabelle correlate nella direzione "a-uno").
Crea un raggruppamento usando tutte le colonne GroupBy (che devono esistere nella tabella dal passaggio 1).
Ogni gruppo è una riga nel risultato, ma rappresenta un set di righe nella tabella originale.
Per ogni gruppo, valuta le colonne di estensione aggiunte. Diversamente dalla funzione SUMMARIZE, non viene eseguita una funzione CALCULATE implicita e il gruppo non viene inserito nel contesto di filtro.
Ogni colonna per la quale si definisce un nome deve avere un'espressione corrispondente, altrimenti viene restituito un errore. Il primo argomento, name, definisce il nome della colonna nei risultati. Il secondo argomento, expression, definisce il calcolo eseguito per ottenere il valore di ogni riga della colonna.
groupBy_columnName deve essere presente nella 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.
La funzione GROUPBY viene usata principalmente per eseguire aggregazioni su risultati intermedi da espressioni di tabella DAX. Per aggregazioni efficienti su tabelle fisiche nel modello, provare a usare la funzione SUMMARIZECOLUMNS o SUMMARIZE.
Questa funzione non è supportata per l'uso nella modalità DirectQuery se usata in colonne calcolate o nelle regole di sicurezza a livello di riga.
Con CURRENTGROUP
La funzione CURRENTGROUP può essere usata 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 table di GROUPBY che appartengono alla riga corrente del risultato di 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
L'esempio seguente calcola inizialmente le vendite totali raggruppate per paese e categoria di prodotti rispetto alle tabelle fisiche usando la funzione SUMMARIZECOLUMNS. Usa quindi la funzione GROUPBY per analizzare il risultato intermedio dal primo passaggio in modo da individuare le vendite massime in ogni paese tra le 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])
)