Freigeben über


GROUPBY

Gilt für:Berechnete Spalteberechnete TabelleMeasurevisuelle 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 not für alle hinzugefügten Erweiterungsspalten eine implizite CALCULATE 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 (or in einer related 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 first Argument, das CURRENTGROUP() ist. Eine vollständige Liste der unterstützten X-Aggregationsfunktionen finden Sie unten im Abschnitt "With CURRENTGROUP".

value zurückgeben

Eine Tabelle mit den ausgewählten Spalten für die groupBy_columnName Argumente and die durch die Namensargumente festgelegten Erweiterungsspalten.

Bemerkungen

  • Die GROUPBY-Funktion führt folgende Aktionen aus:

    1. Beginnen Sie mit der angegebenen Tabelle (andallrelated Tabellen in der Richtung "1").

    2. Erstellen Sie eine Gruppierung mit all der GroupBy Spalten (die in der Tabelle aus Schritt 1 vorhanden sind).

    3. Jede Gruppe ist eine Zeile im Ergebnis, stellt jedoch eine Reihe von Zeilen in der ursprünglichen Tabelle dar.

    4. Für jede Gruppe evaluate die Erweiterungsspalten hinzugefügt werden. Im Gegensatz zur SUMMARIZE-Funktion wird eine implizierte CALCULATEnot ausgeführt, and die Gruppe nicht in den filter Kontext eingefügt wird.

  • Jede Spalte, für die Sie einen Namen define, muss über einen entsprechenden Ausdruck verfügen; andernfalls wird ein error zurückgegeben. Das argument first, name, definiert den Namen der Spalte in den Ergebnissen. Das argument second, Ausdruck, definiert die Berechnung, die ausgeführt wurde, um die value für jede Zeile in dieser Spalte abzurufen.

  • groupBy_columnName muss in einer or Tabelle related sein.

  • Jeder Name muss in doppelte Anführungszeichen gesetzt werden.

  • Die Funktion gruppiert einen ausgewählten Satz von Zeilen in einer Reihe von Sammelzeilen nach dem values einer or mehr 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 SUMMARIZECOLUMNSorSUMMARIZE Funktion verwenden.

  • Diese Funktion wird not für die Verwendung im DirectQuery-Modus unterstützt, wenn sie in berechneten Spalten or Sicherheitsregeln auf Zeilenebene (RLS) verwendet wird.

Mit CURRENTGROUP

CURRENTGROUP kann nur in einem Ausdruck verwendet werden, der eine Erweiterungsspalte innerhalb der GROUPBY-Funktion definiert. In-effectgibt 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 and wird nur als argument first 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 first berechnet die Gesamtumsatzmenge nach Land andproduct Kategorie über physische Tabellen mithilfe der funktion SUMMARIZECOLUMNS. Anschließend wird die GROUPBY-Funktion verwendet, um das Zwischenergebnis aus dem first Schritt zu scannen, um den maximalen Umsatz in jedem Land in den find Kategorien zu product.

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 funktionSUMMARIZECOLUMNS funktion