SUMMARIZE

適用於:導出數據行計算數據表Measure視覺計算

傳回對群組集合進行所要求總計的摘要資料表。

語法

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

參數

詞彙 [定義]
table 傳回數據表的任何 DAX 表達式。
groupBy_ColumnName (選擇性)現有數據行的限定名稱,用來根據找到的 values 建立摘要群組。 此參數不能是運算式。
name 指定給總 orsummarize 數據行的名稱,以雙引弧括住。
expression 傳回單一純量 value的任何 DAX 表示式,其中運算式會評估多次(針對每個數據列/內容)。

傳回 value

具有 groupBy_columnName 自變數選取數據行的數據表,and 名稱自變數所設計的摘要數據行。

備註

  • 您 define 名稱的每個數據行都必須有對應的表達式;否則會傳回 error。 first 自變數 name 會定義結果中的數據行名稱。 表達式 second 自變數會定義執行以取得該數據行中每個數據列 value 的計算。

  • groupBy_columnName必須是 related 資料表中的 tableor,才能 table

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

  • 函式會將一組選取的數據列分組為一組摘要數據列,values 一個 or 多個groupBy_columnName數據行。 每個群組會傳回一個資料列。

  • 在匯出數據行中使用 or 數據列層級安全性 (RLS) 規則時,支援此函式 not 用於 DirectQuery 模式。

範例

下列範例會傳回依 calendaryearandproduct 類別名稱分組的轉銷商銷售摘要,此結果數據表可讓您依 yearandproduct 類別對轉銷商銷售執行分析。

DAX
SUMMARIZE(ResellerSales_USD  
      , DateTime[CalendarYear]  
      , ProductCategory[ProductCategoryName]  
      , "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])  
      , "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])  
      )  

下表顯示數據預覽,因為預期會收到數據表的任何函式都會 received 數據:

DateTime[CalendarYear] ProductCategory[ProductCategoryName] [銷售金額 (美金)] [折扣金額 (美金)]
2008 Bikes 12968255.42 36167.6592
2005 Bikes 6958251.043 4231.1621
2006 Bikes 18901351.08 178175.8399
2007 Bikes 24256817.5 276065.992
2008 元件 2008052.706 39.9266
2005 元件 574256.9865 0
2006 元件 3428213.05 948.7674
2007 元件 5195315.216 4226.0444
2008 Clothing 366507.844 4151.1235
2005 Clothing 31851.1628 90.9593
2006 Clothing 455730.9729 4233.039
2007 Clothing 815853.2868 12489.3835
2008 配件 153299.924 865.5945
2005 配件 18594.4782 4.293
2006 配件 86612.7463 1061.4872
2007 配件 275794.8403 4756.6546

使用 ROLLUP

加入 ROLLUP 語法會藉由將 rollup 數據列新增至groupBy_columnName數據行上的結果,來修改 SUMMARIZE 函式的行為。 ROLLUP 只能在 SUMMARIZE 表示式中使用。

範例

下列範例會將 rollup 個數據列新增至 SUMMARIZE 函數調用 Group-By 資料行:

DAX
SUMMARIZE(ResellerSales_USD  
      , ROLLUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName])  
      , "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])  
      , "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])  
)  

傳回下列資料表,

DateTime[CalendarYear] ProductCategory[ProductCategoryName] [銷售金額 (美金)] [折扣金額 (美金)]
2008 Bikes 12968255.42 36167.6592
2005 Bikes 6958251.043 4231.1621
2006 Bikes 18901351.08 178175.8399
2007 Bikes 24256817.5 276065.992
2008 元件 2008052.706 39.9266
2005 元件 574256.9865 0
2006 元件 3428213.05 948.7674
2007 元件 5195315.216 4226.0444
2008 Clothing 366507.844 4151.1235
2005 Clothing 31851.1628 90.9593
2006 Clothing 455730.9729 4233.039
2007 Clothing 815853.2868 12489.3835
2008 配件 153299.924 865.5945
2005 配件 18594.4782 4.293
2006 配件 86612.7463 1061.4872
2007 配件 275794.8403 4756.6546
2008 15496115.89 41224.3038
2005 7582953.67 4326.4144
2006 22871907.85 184419.1335
2007 30543780.84 297538.0745
76494758.25 527507.9262

使用 ROLLUPGROUP

ROLLUP 語法中新增 ROLLUPGROUP 可用來防止 rollup 數據列中的部分小計。 ROLLUPGROUP 只能在 ROLLUPROLLUPADDISSUBTOTAL、orROLLUPISSUBTOTAL 表示式中使用。

範例

下列範例只會顯示 all 年的總計 and 類別,而不含每個類別 year 的小計 all:

DAX
SUMMARIZE(ResellerSales_USD  
      , ROLLUP(ROLLUPGROUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName]))  
      , "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])  
      , "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])  
)  

傳回下列資料表,

DateTime[CalendarYear] ProductCategory[ProductCategoryName] [銷售金額 (美金)] [折扣金額 (美金)]
2008 Bikes 12968255.42 36167.6592
2005 Bikes 6958251.043 4231.1621
2006 Bikes 18901351.08 178175.8399
2007 Bikes 24256817.5 276065.992
2008 元件 2008052.706 39.9266
2005 元件 574256.9865 0
2006 元件 3428213.05 948.7674
2007 元件 5195315.216 4226.0444
2008 Clothing 366507.844 4151.1235
2005 Clothing 31851.1628 90.9593
2006 Clothing 455730.9729 4233.039
2007 Clothing 815853.2868 12489.3835
2008 配件 153299.924 865.5945
2005 配件 18594.4782 4.293
2006 配件 86612.7463 1061.4872
2007 配件 275794.8403 4756.6546
76494758.25 527507.9262

使用 ISSUBTOTAL

使用 ISSUBTOTAL,您可以在 SUMMARIZE 表示式中建立另一個數據行,以傳回 Trueif 數據列 contains 小計 values,將數據行指定為自變數給 ISSUBTOTAL,否則會傳回 False。 ISSUBTOTAL 只能在 SUMMARIZE 表示式中使用。

範例

下列 sample 會針對指定 SUMMARIZE 函數呼叫中每個 ROLLUP 資料行產生 ISSUBTOTAL 資料行:

DAX
SUMMARIZE(ResellerSales_USD  
      , ROLLUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName])  
      , "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])  
      , "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])  
      , "Is Sub Total for DateTimeCalendarYear", ISSUBTOTAL(DateTime[CalendarYear])  
      , "Is Sub Total for ProductCategoryName", ISSUBTOTAL(ProductCategory[ProductCategoryName])  
)  

傳回下列資料表,

[為 DateTimeCalendarYear 的小計] [為 ProductCategoryName 的小計] DateTime[CalendarYear] ProductCategory[ProductCategoryName] [銷售金額 (美金)] [折扣金額 (美金)]
FALSE FALSE
FALSE FALSE 2008 Bikes 12968255.42 36167.6592
FALSE FALSE 2005 Bikes 6958251.043 4231.1621
FALSE FALSE 2006 Bikes 18901351.08 178175.8399
FALSE FALSE 2007 Bikes 24256817.5 276065.992
FALSE FALSE 2008 元件 2008052.706 39.9266
FALSE FALSE 2005 元件 574256.9865 0
FALSE FALSE 2006 元件 3428213.05 948.7674
FALSE FALSE 2007 元件 5195315.216 4226.0444
FALSE FALSE 2008 Clothing 366507.844 4151.1235
FALSE FALSE 2005 Clothing 31851.1628 90.9593
FALSE FALSE 2006 Clothing 455730.9729 4233.039
FALSE FALSE 2007 Clothing 815853.2868 12489.3835
FALSE FALSE 2008 配件 153299.924 865.5945
FALSE FALSE 2005 配件 18594.4782 4.293
FALSE FALSE 2006 配件 86612.7463 1061.4872
FALSE FALSE 2007 配件 275794.8403 4756.6546
FALSE TRUE
FALSE TRUE 2008 15496115.89 41224.3038
FALSE TRUE 2005 7582953.67 4326.4144
FALSE TRUE 2006 22871907.85 184419.1335
FALSE TRUE 2007 30543780.84 297538.0745
TRUE TRUE 76494758.25 527507.9262

SUMMARIZECOLUMNS