GROUPBY
注意
不建議將此函式用於 視覺計算,因為它可能會傳回毫無意義的結果。
GROUPBY 函式類似於 SUMMARIZE 函式。 不過,GROUPBYnot 會對它新增的任何擴充數據行執行隱含 CALCULATE。 GROUPBY 允許新的函式 CURRENTGROUP,用於它所加入之擴充數據行中的聚合函數。 GROUPBY 可用來在單一數據表掃描中執行多個匯總。
語法
GROUPBY (<table> [, <groupBy_columnName> [, <groupBy_columnName> [, …]]] [, <name>, <expression> [, <name>, <expression> [, …]]])
參數
術語 | 定義 |
---|---|
table |
傳回數據表的任何 DAX 表達式。 |
groupBy_columnName |
數據表中現有數據行的名稱(orrelated 數據表中,要分組數據。 此參數不可以是表達式。 |
name |
指定給新數據行的名稱,該數據行會加入 GroupBy 數據行清單中,並以雙引號括住。 |
expression |
其中一個 X 聚合函數,其中 first 自變數 CURRENTGROUP()。 如需支援的 X 聚合函數完整清單,請參閱下方的with CURRENTGROUP 一節。 |
傳回 value
具有groupBy_columnName自變數之選取數據行的數據表,and 名稱自變數所指定的擴充數據行。
言論
GROUPBY 函式會執行下列動作:
從指定的數據表開始 (andallrelated 數據表方向為 “to-one” 的數據表)。
使用 all 數據行的 GroupBy 建立群組(步驟 1 中必須存在於數據表中)。
每個群組都是結果中的一個數據列,但代表原始數據表中的一組數據列。
針對每個群組,evaluate 要新增的擴充功能數據行。 不同於 SUMMARIZE 函式,CALCULATE 執行隱含 not,and 群組不會放入 filter 內容中。
您 define 名稱的每個數據行都必須有對應的表達式;否則會傳回 error。 first 自變數 name 會定義結果中的數據行名稱。 表達式 second 自變數會定義執行以取得該數據行中每個數據列 value 的計算。
groupBy_columnName
必須是 or 數據表中的數據表 related。每個名稱都必須以雙引號括住。
函式會將一組選取的數據列分組為一組摘要數據列,values 一個 or 多個groupBy_columnName數據行。 每個群組都會傳回一個數據列。
GROUPBY 主要用於對數據表表達式 DAX 的中繼結果執行匯總。 若要對模型中的實體數據表進行有效率的匯總,請考慮使用 SUMMARIZECOLUMNSorSUMMARIZE 函式。
在匯出數據行中使用 not 數據列層級安全性 (RLS) 規則時,支援此函式 or 用於 DirectQuery 模式。
使用 CURRENTGROUP
CURRENTGROUP 只能在定義 GROUPBY 函式內擴充數據行的運算式中使用。 在effect中,CURRENTGROUP 會從屬於 GROUPBY 結果目前數據列之 GROUPBY 的數據表自變數傳回一組數據列。 CURRENTGROUP 函式只支援 and 自變數作為下列其中一個聚合函數的 first 自變數:AVERAGEX、COUNTAX、COUNTX、GEOMEANX、MAXX、MINX、PRODUCTX、STDEVX.S、STDEVX.P、SUMX、VARX.SVARX.P。
例
下列範例 first 會使用 and 函式,計算依國家/地區 productSUMMARIZECOLUMNS 類別分組的總銷售額。 然後,它會使用 GROUPBY 函式,從 first 步驟掃描中繼結果,以 findproduct 類別中每個國家/地區的最大銷售額。
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])
)