GROUPBY

適用於:匯出數據行匯出數據表量值視覺計算

注意

不建議將此函式用於 視覺計算 ,因為它可能會傳回毫無意義的結果。

GROUPBY 函式類似於 SUMMARIZE 函式。 不過,GROUPBY 不會對其所新增的任何擴充資料行執行隱含 CALCULATE。 GROUPBY 允許在其所新增擴充資料行中彙總函式內部使用新的函式 CURRENTGROUP。 GROUPBY 是用來在單一資料表掃描中執行多個彙總。

語法

GROUPBY (<table> [, <groupBy_columnName> [, <groupBy_columnName> [, …]]] [, <name>, <expression> [, <name>, <expression> [, …]]])

參數

詞彙 [定義]
table 傳回資料表的所有 DAX 運算式。
groupBy_columnName 資料表 (或相關資料表) 中現有資料行的名稱,資料會依此名稱分組。 此參數不能是運算式。
NAME 針對 GroupBy 資料行清單中所新增資料行指定的名稱,以雙引號括住。
expression 其中一個 X 彙總函式具有要進行 CURRENTGROUP() 的第一個引數。 如需支援 X 彙總函式的完整清單,請參閱以下的 With CURRENTGROUP 區段。

傳回值

資料表,其中包含針對 groupBy_columnName 引數選取的資料行,以及 name 引數所指定的延伸資料行。

備註

  • GROUPBY 函式會執行下列作業:

    1. 從所指定資料表 (以及方向「對一」的所有相關資料表) 開始。

    2. 使用所有 GroupBy 資料行來建立群組 (這些資料行必須存在於步驟 #1 的資料表中)。

    3. 在結果中,每個群組會是一個資料列,但代表原始資料表中的一組資料列。

    4. 針對每個群組評估所新增的擴充資料行。 不同於 SUMMARIZE 函式,其不會執行隱含 CALCULATE,且不會將群組放入篩選內容。

  • 您定義名稱的每個資料行都必須有相對應運算式;否則會傳回錯誤。 第一個引數 name 會定義結果中的資料行名稱。 第二個引數 expression 會定義為了取得該資料行中每個資料列值而執行的計算。

  • groupBy_columnName 必須在資料表或相關資料表中。

  • 每個名稱都必須以雙引號括住。

  • 此函式會依一或多個 groupBy_columnName 資料行的值,將一組選取的資料列分組為一組摘要資料列。 每個群組會傳回一個資料列。

  • GROUPBY 主要是用來對 DAX 資料表運算式的中繼結果執行彙總。 如果要對模型中的實體資料表進行有效率的彙總,請考量使用 SUMMARIZECOLUMNSSUMMARIZE 函式。

  • 在計算結果欄或資料列層級安全性 (RLS) 規則中使用時,不支援在 DirectQuery 模式中使用此函式。

使用 CURRENTGROUP

CURRENTGROUP 只能用於定義 GROUPBY 函式內延伸資料行的運算式。 實際上,CURRENTGROUP 會從 GROUPBY 的資料表引數,傳回屬於 GROUPBY 結果目前資料列的一組資料列。 CURRENTGROUP 函式不接受引數,且僅支援作為下列其中一個彙總函式的第一個引數:AVERAGEXCOUNTAXCOUNTXGEOMEANXMAXXMINXPRODUCTXSTDEVX.SSTDEVX.PSUMXVARX.SVARX.P

範例

下列範例會先使用 SUMMARIZECOLUMNS 函式,計算實體資料表上依國家/地區和產品類別分組的總銷售額。 接著,會使用 GROUPBY 函式來掃描第一個步驟的中繼結果,以尋找每個國家/地區中產品類別之間的最大銷售額。

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 函式
SUMMARIZECOLUMNS 函式