GROUPBY
Gilt für:Berechnete Spalte
Berechnete Tabelle
Measure
visuelle Berechnung
Anmerkung
Diese Funktion wird für die Verwendung in visuellen Berechnungen abgeraten, da sie wahrscheinlich sinnlose Ergebnisse zurückgibt.
Die GROUPBY-Funktion ähnelt der funktion SUMMARIZE. GROUPBY führt jedoch keine implizite CALCULATE für alle hinzugefügten Erweiterungsspalten aus. GROUPBY ermöglicht die Verwendung einer neuen Funktion CURRENTGROUPin Aggregationsfunktionen in den hinzugefügten Erweiterungsspalten. GROUPBY wird verwendet, um mehrere Aggregationen in einem einzelnen Tabellenscan durchzuführen.
Syntax
GROUPBY (<table> [, <groupBy_columnName> [, <groupBy_columnName> [, …]]] [, <name>, <expression> [, <name>, <expression> [, …]]])
Parameter
Ausdruck | Definition |
---|---|
table |
Ein beliebiger DAX Ausdruck, der eine Datentabelle zurückgibt. |
groupBy_columnName |
Der Name einer vorhandenen Spalte in der Tabelle (oder in einer verknüpften Tabelle), nach der die Daten gruppiert werden sollen. Dieser Parameter kann kein Ausdruck sein. |
name |
Der Name einer neuen Spalte, die der Liste der GroupBy-Spalten hinzugefügt wird, in doppelte Anführungszeichen eingeschlossen. |
expression |
Eine der X-Aggregationsfunktionen mit dem ersten Argument, das CURRENTGROUP(). Eine vollständige Liste der unterstützten X-Aggregationsfunktionen finden Sie unten im Abschnitt "With CURRENTGROUP". |
Rückgabewert
Eine Tabelle mit den ausgewählten Spalten für die groupBy_columnName Argumente und die durch die Namensargumente festgelegten Erweiterungsspalten.
Bemerkungen
Die GROUPBY-Funktion führt folgende Aktionen aus:
Beginnen Sie mit der angegebenen Tabelle (und allen verwandten Tabellen in der Richtung "1").
Erstellen Sie eine Gruppierung mit allen GroupBy-Spalten (die in der Tabelle aus Schritt 1 vorhanden sind).
Jede Gruppe ist eine Zeile im Ergebnis, stellt jedoch eine Reihe von Zeilen in der ursprünglichen Tabelle dar.
Bewerten Sie für jede Gruppe die Erweiterungsspalten, die hinzugefügt werden. Im Gegensatz zur SUMMARIZE-Funktion wird keine implizite CALCULATE ausgeführt, und die Gruppe wird nicht in den Filterkontext eingefügt.
Jede Spalte, für die Sie einen Namen definieren, muss über einen entsprechenden Ausdruck verfügen. andernfalls wird ein Fehler zurückgegeben. Das erste Argument, name, definiert den Namen der Spalte in den Ergebnissen. Das zweite Argument, Ausdruck, definiert die Berechnung, die zum Abrufen des Werts für jede Zeile in dieser Spalte ausgeführt wurde.
groupBy_columnName
muss sich entweder in einer Tabelle oder in einer verknüpften Tabelle befinden.Jeder Name muss in doppelte Anführungszeichen gesetzt werden.
Die Funktion gruppiert einen ausgewählten Satz von Zeilen in eine Gruppe von Sammelzeilen nach den Werten einer oder mehrerer groupBy_columnName Spalten. Für jede Gruppe wird eine Zeile zurückgegeben.
GROUPBY wird in erster Linie verwendet, um Aggregationen über Zwischenergebnisse aus DAX Tabellenausdrücken durchzuführen. Für effiziente Aggregationen über physische Tabellen im Modell sollten Sie die Verwendung von SUMMARIZECOLUMNS oder SUMMARIZE Funktion in Betracht ziehen.
Diese Funktion wird für die Verwendung im DirectQuery-Modus nicht unterstützt, wenn sie in berechneten Spalten oder Sicherheitsregeln auf Zeilenebene (RLS) verwendet wird.
Mit CURRENTGROUP
CURRENTGROUP kann nur in einem Ausdruck verwendet werden, der eine Erweiterungsspalte innerhalb der GROUPBY-Funktion definiert. Tatsächlich gibt CURRENTGROUP eine Reihe von Zeilen aus dem Tabellenargument GROUPBY zurück, die zur aktuellen Zeile des GROUPBY Ergebnisses gehören. Die funktion CURRENTGROUP akzeptiert keine Argumente und wird nur als erstes Argument zu einer der folgenden Aggregationsfunktionen unterstützt: AVERAGEX, COUNTAX, COUNTX, GEOMEANX, MAXX, MINX, PRODUCTX, STDEVX.S, STDEVX.P, SUMX, VARX.S, VARX.P.
Beispiel
Im folgenden Beispiel wird zunächst der Gesamtumsatz nach Land und Produktkategorie über physische Tabellen mithilfe der funktion SUMMARIZECOLUMNS berechnet. Anschließend wird die funktion GROUPBY verwendet, um das Zwischenergebnis aus dem ersten Schritt zu scannen, um den maximalen Umsatz in jedem Land in den Produktkategorien zu finden.
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])
)