GROUPBY
gælder for:beregnet kolonne
beregnet tabel
beregning af måling
visualisering
Seddel
Denne funktion frarådes til brug i visuelle beregninger da den sandsynligvis returnerer meningsløse resultater.
Funktionen GROUPBY svarer til funktionen SUMMARIZE. GROUPBY udfører dog ikke en implicit CALCULATE for de udvidelseskolonner, der tilføjes. GROUPBY tillader, at en ny funktion, CURRENTGROUP, bruges i sammenlægningsfunktioner i de udvidelseskolonner, der tilføjes. GROUPBY bruges til at udføre flere sammenlægninger i en enkelt tabelscanning.
Syntaks
GROUPBY (<table> [, <groupBy_columnName> [, <groupBy_columnName> [, …]]] [, <name>, <expression> [, <name>, <expression> [, …]]])
Parametre
Udtryk | Definition |
---|---|
table |
Ethvert DAX udtryk, der returnerer en tabel med data. |
groupBy_columnName |
Navnet på en eksisterende kolonne i tabellen (eller i en relateret tabel), som dataene skal grupperes efter. Denne parameter kan ikke være et udtryk. |
name |
Det navn, der er givet til en ny kolonne, som føjes til listen over GroupBy-kolonner, omsluttet af dobbelte anførselstegn. |
expression |
En af X-sammenlægningsfunktionerne, hvor det første argument er CURRENTGROUP(). Se afsnittet Med CURRENTGROUP nedenfor for at få en komplet liste over understøttede X-sammenlægningsfunktioner. |
Returværdi
En tabel med de valgte kolonner for argumenterne groupBy_columnName og de udvidelseskolonner, der er angivet af navneargumenterne.
Bemærkninger
Funktionen GROUPBY gør følgende:
Start med den angivne tabel (og alle relaterede tabeller i retningen "til-en").
Opret en gruppering ved hjælp af alle GroupBy-kolonnerne (som skal findes i tabellen fra trin #1.).
Hver gruppe er én række i resultatet, men repræsenterer et sæt rækker i den oprindelige tabel.
For hver gruppe skal du evaluere de udvidelseskolonner, der tilføjes. I modsætning til funktionen SUMMARIZE udføres der ikke en implicit CALCULATE, og gruppen placeres ikke i filterkonteksten.
Hver kolonne, du definerer et navn for, skal have et tilsvarende udtryk. Ellers returneres der en fejl. Det første argument, name, definerer navnet på kolonnen i resultaterne. Det andet argument, udtryk, definerer den beregning, der udføres for at hente værdien for hver række i den pågældende kolonne.
groupBy_columnName
skal enten være i tabellen eller i en relateret tabel.Hvert navn skal være omsluttet af dobbelte anførselstegn.
Funktionen grupperer et markeret sæt rækker i et sæt oversigtsrækker efter værdierne for en eller flere groupBy_columnName kolonner. Der returneres én række for hver gruppe.
GROUPBY bruges primært til at udføre sammenlægninger af mellemliggende resultater fra DAX tabeludtryk. Hvis du vil have effektive sammenlægninger over fysiske tabeller i modellen, kan du overveje at bruge SUMMARIZECOLUMNS eller SUMMARIZE funktion.
Denne funktion understøttes ikke til brug i DirectQuery-tilstand, når den bruges i beregnede kolonner eller RLS-regler (row-level security).
Med CURRENTGROUP
CURRENTGROUP kan kun bruges i et udtryk, der definerer en udvidelseskolonne i funktionen GROUPBY. Faktisk returnerer CURRENTGROUP et sæt rækker fra tabelargumentet for GROUPBY, der tilhører den aktuelle række i GROUPBY resultat. Funktionen CURRENTGROUP bruger ingen argumenter og understøttes kun som det første argument i en af følgende sammenlægningsfunktioner: AVERAGEX, COUNTAX, COUNTX, GEOMEANX, MAXX, MINX, PRODUCTX, STDEVX.S, STDEVX.P, SUMX, VARX.S, VARX.P.
Eksempel
I følgende eksempel beregnes det samlede salg grupperet efter land og produktkategori først ved hjælp af funktionen SUMMARIZECOLUMNS. Den bruger derefter funktionen GROUPBY til at scanne det mellemliggende resultat fra det første trin for at finde det maksimale salg i hvert land på tværs af produktkategorierne.
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])
)