GROUPBY
Si applica a:colonna calcolatatabella calcolataMeasurecalcolo visivo
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 esegue not un CALCULATE implicito per tutte 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 (or in una tabella related) 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 l'argomento firstCURRENTGROUP(). Per l'elenco completo delle funzioni di aggregazione X supportate, vedere la sezione Con CURRENTGROUP di seguito. |
Restituisce value
Tabella con le colonne selezionate per gli argomenti groupBy_columnName and le colonne di estensione designate dagli argomenti del nome.
Osservazioni
La funzione GROUPBY esegue le operazioni seguenti:
Iniziare con la tabella specificata (andallrelated tabelle nella direzione "to-one").
Creare un raggruppamento usando all delle colonne GroupBy (necessarie per esistere nella tabella nel passaggio 1.).
Ogni gruppo è una riga nel risultato, ma rappresenta un set di righe nella tabella originale.
Per ogni gruppo, evaluate le colonne di estensione aggiunte. A differenza della funzione SUMMARIZE, viene CALCULATE eseguita una not implicita, and il gruppo non viene inserito nel contesto di filter.
Ogni colonna per cui si define un nome deve avere un'espressione corrispondente; in caso contrario, viene restituito un error. L'argomento first, nome, definisce il nome della colonna nei risultati. L'argomento second, espressione, definisce il calcolo eseguito per ottenere il value per ogni riga della colonna.
groupBy_columnName
deve trovarsi nella tabella or in una tabella related.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 al values di una or 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 SUMMARIZECOLUMNSorSUMMARIZE funzione.
Questa funzione è not supportata per l'uso in modalità DirectQuery quando viene usata nelle colonne calcolate or 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-effect, 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 and è supportata solo come argomento first per una delle funzioni di aggregazione seguenti: AVERAGEX, COUNTAX, COUNTX, GEOMEANX, MAXX, MINX, PRODUCTX, STDEVX.S, STDEVX.P, SUMX, SUMX, VARX.P, .
Esempio
Nell'esempio seguente first calcola le vendite totali raggruppate per paese andproduct categoria su tabelle fisiche usando la funzione SUMMARIZECOLUMNS. Usa quindi la funzione GROUPBY per analizzare il risultato intermedio del passaggio first per find le vendite massime in ogni paese nelle categorie di product.
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])
)