GROUPBY
Gilt für:Berechnete SpalteBerechnete TabelleMeasureVisuelle Berechnung
Hinweis
Diese Funktion wird für die Verwendung in visuellen Berechnungen abgeraten, da sie wahrscheinlich sinnlose Ergebnisse zurückgibt.
Die GROUPBY-Funktion ist mit der SUMMARIZE-Funktion vergleichbar. GROUPBY führt keine implizite CALCULATE-Funktion für Erweiterungsspalten aus, die durch die Funktion hinzugefügt werden. GROUPBY lässt zu, dass die neue CURRENTGROUP-Funktion in Aggregationsfunktionen in den Erweiterungsspalten verwendet werden, die durch die Funktion hinzugefügt werden. GROUPBY wird genutzt, um mehrere Aggregationen in einem einzelnen Tabellenscan durchzuführen.
Syntax
GROUPBY (<table> [, <groupBy_columnName> [, <groupBy_columnName> [, …]]] [, <name>, <expression> [, <name>, <expression> [, …]]])
Parameter
Begriff | Definition |
---|---|
table | Ein DAX-Ausdruck, der eine Tabelle mit Daten zurückgibt. |
groupBy_columnName | Der Name einer vorhandenen Spalte in der Tabelle (oder in einer zugehörigen Tabelle), anhand derer die Daten gruppiert werden sollen. Dieser Parameter darf kein Ausdruck sein. |
name | Der Name in doppelten Anführungszeichen für eine neue Spalte, die der Liste mit „GroupBy“-Spalten hinzugefügt wird. |
expression | Eine der X-Aggregationsfunktionen. Das erste Argument ist CURRENTGROUP(). Im Abschnitt „Mit CURRENTGROUP“ unten finden Sie eine vollständige Liste unterstützter X-Aggregationsfunktionen. |
Rückgabewert
Eine Tabelle mit den ausgewählten Spalten für die „groupBy_columnName“-Argumente und die Erweiterungsspalten, die durch die Namensargumente festgelegt werden.
Bemerkungen
Die GROUPBY-Funktion bewirkt Folgendes:
Beginnen Sie mit der angegebenen Tabelle (und mit allen zugehörigen Tabellen in der „zu-eins“-Richtung).
Erstellen Sie eine Gruppierung mithilfe aller „GroupBy“-Spalten (die in der Tabelle aus Schritt 1 vorhanden sein müssen).
Jede Gruppe entspricht einer Zeile im Ergebnis, stellt in der ursprünglichen Tabelle jedoch eine Zeilengruppe dar.
Werten Sie für jede Gruppe die hinzugefügten Erweiterungsspalten aus. Im Gegensatz zur SUMMARIZE-Funktion wird keine implizite CALCULATE-Funktion ausgeführt, und die Gruppe wird nicht in den Filterkontext eingefügt.
Für jede Spalte, für die Sie einen Namen definieren, muss ein entsprechender Ausdruck vorhanden sein, da andernfalls ein Fehler zurückgegeben wird. Das erste Argument („name“) definiert den Namen der Spalte in den Ergebnissen. Das zweite Argument („expression“) definiert die Berechnung, die durchgeführt wird, um den Wert für die einzelnen Zeilen in dieser Spalte abzurufen.
„groupBy_columnName“ muss in der Tabelle oder in einer zugehörigen Tabelle vorhanden sein.
Jeder Name muss in doppelte Anführungszeichen gesetzt werden.
Die Funktion gruppiert einen ausgewählten Zeilensatz durch den Wert von mindestens einer „groupBy_columnName“-Spalte in einen Satz Zusammenfassungszeilen. Für jede Gruppe wird eine Zeile zurückgegeben.
GROUPBY wird hauptsächlich dazu verwendet, Aggregationen für Zwischenergebnisse von DAX-Tabellenausdrücken durchzuführen. Für effiziente Aggregationen für physische Tabellen im Modell sollten Sie die Verwendung der SUMMARIZECOLUMNS- oder SUMMARIZE-Funktion in Erwägung ziehen.
Die Verwendung dieser Funktion im DirectQuery-Modus wird nicht unterstützt, wenn sie in berechneten Spalten oder RLS-Regeln (Row-Level Security) eingesetzt wird.
Mit CURRENTGROUP
CURRENTGROUP darf nur in einem Ausdruck verwendet werden, der eine Erweiterungsspalte in der GROUPBY-Funktion definiert. CURRENTGROUP gibt mehrere Zeilen aus dem Tabellenargument von GROUPBY zurück, die zur aktuellen Zeile des GROUPBY-Ergebnisses gehören. Die CURRENTGROUP-Funktion verwendet keine Argumente und wird nur als erstes Argument für eine der folgenden Aggregationsfunktionen unterstützt: AVERAGEX, COUNTAX, COUNTX, GEOMEANX, MAXX, MINX, PRODUCTX, STDEVX.S, STDEVX.P, SUMX, VARX.S, VARX.P.
Beispiel
Das folgende Beispiel berechnet zunächst den Gesamtumsatz nach Land/Region und Produktkategorie für physische Tabellen mithilfe der SUMMARIZECOLUMNS-Funktion. Dann wird die GROUPBY-Funktion genutzt, um das Zwischenergebnis des ersten Schritts zu überprüfen, um die höchsten Umsätze für die einzelnen Länder und Produktkategorien zu ermitteln.
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])
)