Del via


GROUPBY

gjelder:beregnet kolonneberegnet tabellmålevisualobjektberegning

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:

    1. Start med den angitte tabellen (og alle relaterte tabeller i «til-én»-retningen).

    2. Opprett en gruppering ved hjelp av alle GroupBy-kolonnene (som kreves for å finnes i tabellen fra trinn #1.).

    3. Hver gruppe er én rad i resultatet, men representerer et sett med rader i den opprinnelige tabellen.

    4. 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])
)

SUMMARIZE funksjonSUMMARIZECOLUMNS funksjon