閱讀英文

共用方式為


GROUPBY

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

注意

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

GROUPBY 函式類似於 SUMMARIZE 函式。 不過,GROUPBY 不會針對它新增的任何擴充數據行執行隱含 CALCULATE。 GROUPBY 允許新的函式 CURRENTGROUP,用於它所新增之擴充數據行中的聚合函數內。 GROUPBY 可用來在單一數據表掃描中執行多個匯總。

語法

DAX
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. 從指定的數據表開始 (以及 “to-one” 方向的所有相關數據表)。

    2. 使用步驟 1 的所有 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 函式來掃描第一個步驟中的中繼結果,以找出產品類別中每個國家/地區的最大銷售額。

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