GROUPBY
Platí pro: Výpočet počítané tabulky Počítaná tabulka Výpočet vizuálu
Poznámka:
Tato funkce se nedoporučuje používat ve vizuálních výpočtech , protože pravděpodobně vrací nesmyslné výsledky.
Funkce GROUPBY je podobná funkci SUMMARIZE . GROUPBY však neprovádí implicitní CALCULATE pro žádné rozšiřující sloupce, které přidává. GROUPBY umožňuje použít novou funkci CURRENTGROUP uvnitř agregačních funkcí ve sloupcích rozšíření, které přidává. FUNKCE GROUPBY slouží k provádění více agregací v jedné tabulce.
Syntaxe
GROUPBY (<table> [, <groupBy_columnName> [, <groupBy_columnName> [, …]]] [, <name>, <expression> [, <name>, <expression> [, …]]])
Parametry
Pojem | definice |
---|---|
table | Libovolný výraz DAX, který vrací tabulku dat. |
groupBy_columnName | Název existujícího sloupce v tabulce (nebo v související tabulce), podle kterého se mají data seskupit. Tento parametr nemůže být výraz. |
name | Název přiřazený novému sloupci, který se přidává do seznamu sloupců GroupBy uzavřených do dvojitých uvozovek. |
výraz | Jedna z agregačních funkcí X s prvním argumentem CURRENTGROUP(). Úplný seznam podporovaných agregačních funkcí X najdete níže v části CURRENTGROUP. |
Vrácená hodnota
Tabulka s vybranými sloupci pro argumenty groupBy_columnName a sloupci rozšíření určené argumenty názvu.
Poznámky
Funkce GROUPBY provede následující:
Začněte zadanou tabulkou (a všechny související tabulky ve směru "to-one").
Vytvořte seskupení pomocí všech sloupců GroupBy (které jsou nutné k existenci v tabulce z kroku 1.).
Každá skupina je ve výsledku jeden řádek, ale představuje sadu řádků v původní tabulce.
Pro každou skupinu vyhodnoťte přidané sloupce rozšíření. Na rozdíl od funkce SUMMARIZE se implicitní funkce CALCULATE neprovádí a skupina není umístěna do kontextu filtru.
Každý sloupec, pro který definujete název, musí mít odpovídající výraz; v opačném případě se vrátí chyba. První argument, název, definuje název sloupce ve výsledcích. Druhý argument, výraz, definuje výpočet provedený za účelem získání hodnoty pro každý řádek v daném sloupci.
groupBy_columnName musí být buď v tabulce, nebo v související tabulce.
Každý název musí být uzavřený do uvozovek.
Funkce seskupí vybranou sadu řádků do sady souhrnných řádků podle hodnot jednoho nebo více groupBy_columnName sloupců. Pro každou skupinu se vrátí jeden řádek.
GROUPBY se primárně používá k provádění agregací u průběžných výsledků z výrazů tabulky DAX. Pro efektivní agregace nad fyzickými tabulkami v modelu zvažte použití funkce SUMMARIZECOLUMNS nebo SUMMARIZE .
Tato funkce není podporována pro použití v režimu DirectQuery při použití v počítaných sloupcích nebo pravidlech zabezpečení na úrovni řádků (RLS).
S CURRENTGROUP
CURRENTGROUP lze použít pouze ve výrazu, který definuje rozšiřující sloupec v rámci funkce GROUPBY. Funkce CURRENTGROUP vrátí sadu řádků z argumentu tabulky GROUPBY, který patří do aktuálního řádku výsledku GROUPBY. Funkce CURRENTGROUP nepřijímá žádné argumenty a jako první argument se podporuje pouze jedna z následujících agregačních funkcí: AVERAGEX, COUNTAX, COUNTX, GEOMEANX, MAXX, MINX, PRODUCTX, STDEVX. S, STDEVX. P, SUMX, VARX. S, VARX. P.
Příklad
Následující příklad nejprve vypočítá celkový prodej seskupený podle země a kategorie produktů přes fyzické tabulky pomocí funkce SUMMARIZECOLUMNS . Potom pomocí funkce GROUPBY prohledá zprostředkující výsledek z prvního kroku k vyhledání maximálního prodeje v jednotlivých zemích napříč kategoriemi produktů.
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])
)