GROUPBY
gjelder:beregnet kolonne
beregnet tabell
måle
visualobjektberegning
Notat
Denne funksjonen frarådes for bruk i visuelle beregninger da den sannsynligvis returnerer meningsløse resultater.
Funksjonen GROUPBY ligner på SUMMARIZE-funksjonen. GROUPBY gjør imidlertid ikke en implisitt CALCULATE for utvidelseskolonner som legges til. GROUPBY tillater at en ny funksjon, CURRENTGROUP, brukes i aggregasjonsfunksjoner i utvidelseskolonnene den legger til. GROUPBY brukes til å utføre flere aggregasjoner i én enkelt tabellskanning.
Syntaks
GROUPBY (<table> [, <groupBy_columnName> [, <groupBy_columnName> [, …]]] [, <name>, <expression> [, <name>, <expression> [, …]]])
Parametere
Vilkår | Definisjon |
---|---|
table |
Alle DAX uttrykk som returnerer en tabell med data. |
groupBy_columnName |
Navnet på en eksisterende kolonne i tabellen (eller i en relatert tabell) som dataene skal grupperes etter. Denne parameteren kan ikke være et uttrykk. |
name |
Navnet som gis til en ny kolonne som legges til i listen over GroupBy-kolonner, omsluttet av doble anførselstegn. |
expression |
Én av X-aggregasjonsfunksjonene der det første argumentet er CURRENTGROUP(). Se Inndelingen Med CURRENTGROUP nedenfor for å se den fullstendige listen over støttede X-aggregasjonsfunksjoner. |
Returverdi
En tabell med de valgte kolonnene for groupBy_columnName-argumentene og utvidelseskolonnene som er angitt av navneargumentene.
Merknader
Funksjonen GROUPBY gjør følgende:
Start med den angitte tabellen (og alle relaterte tabeller i «til-én»-retningen).
Opprett en gruppering ved hjelp av alle GroupBy-kolonnene (som kreves for å finnes i tabellen fra trinn #1.).
Hver gruppe er én rad i resultatet, men representerer et sett med rader i den opprinnelige tabellen.
Evaluer utvidelseskolonnene som legges til for hver gruppe. I motsetning til SUMMARIZE-funksjonen utføres ikke en underforstått CALCULATE, og gruppen plasseres ikke i filterkonteksten.
Hver kolonne du definerer et navn for, må ha et tilsvarende uttrykk. Ellers returneres en feil. Det første argumentet, navnet, definerer navnet på kolonnen i resultatene. Det andre argumentet, uttrykk, definerer beregningen som utføres for å hente verdien for hver rad i denne kolonnen.
groupBy_columnName
må være enten i tabellen eller i en relatert tabell.Hvert navn må stå i doble anførselstegn.
Funksjonen grupperer et merket sett med rader i et sett med sammendragsrader etter verdiene for én eller flere groupBy_columnName kolonner. Én rad returneres for hver gruppe.
GROUPBY brukes hovedsakelig til å utføre aggregasjoner over mellomliggende resultater fra DAX tabelluttrykk. Hvis du vil ha effektive aggregasjoner over fysiske tabeller i modellen, kan du vurdere å bruke SUMMARIZECOLUMNS- eller SUMMARIZE-funksjonen.
Denne funksjonen støttes ikke for bruk i DirectQuery-modus når den brukes i beregnede kolonner eller regler for sikkerhet på radnivå (RLS).
Med CURRENTGROUP
CURRENTGROUP kan bare brukes i et uttrykk som definerer en utvidelseskolonne i GROUPBY-funksjonen. I praksis returnerer CURRENTGROUP et sett med rader fra tabellargumentet for GROUPBY som tilhører gjeldende rad i GROUPBY resultat. Funksjonen CURRENTGROUP tar ingen argumenter og støttes bare som det første argumentet til én av følgende aggregasjonsfunksjoner: AVERAGEX, COUNTAX, COUNTX, GEOMEANX, MAXX, MINX, PRODUCTX, STDEVX.S, STDEVX.P, SUMX, VARX.S, VARX.P.
Eksempel
Eksemplet nedenfor beregner først det totale salget gruppert etter land og produktkategori over fysiske tabeller ved hjelp av SUMMARIZECOLUMNS-funksjonen. Den bruker deretter GROUPBY-funksjonen til å skanne mellomresultatet fra det første trinnet for å finne maksimalt salg i hvert land på tvers av produktkategoriene.
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])
)