SUMMARIZE 函數 (DAX)

針對一組群組的要求總計傳回摘要資料表。

語法

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

參數

  • table
    傳回資料表的任何 DAX 運算式。

  • groupBy_columnName
    (選擇性) 要用來根據找到的值建立摘要群組之現有資料行的限定名稱。 這個參數不能是運算式。

  • name
    提供給資料行總計或摘要的名稱 (用雙引號括住)。

  • expression
    傳回單一純量值的任何 DAX 運算式,而系統將多次評估此運算式 (針對每個資料列/內容)。

傳回值

資料表,其中包含 groupBy_columnName 引數的選取資料行以及 name 引數所設計的摘要資料行。

備註

  1. 您定義名稱的每個資料行都必須具有對應的運算式,否則系統會傳回錯誤。 第一個引數 name 會定義結果中資料行的名稱。 第二個引數 expression 會定義要取得該資料行中每個資料列值所執行的計算。

  2. groupBy_columnName 必須位於 table 中或位於 table 的相關資料表中。

  3. 每個名稱都應該用雙引號括住。

  4. 此函數會依照一個或多個 groupBy_columnName 資料行的值,將一組選取的資料列分組成一組摘要資料列。 每一個群組都會傳回一個資料列。

範例

下列範例會傳回根據日曆年度和產品類別目錄名稱分組的轉售商銷售摘要。這份結果資料表可讓您依照年度和產品類別目錄,針對轉售商銷售進行分析。

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

下表顯示資料的預覽,如同任何預期接收資料表之函數所收到的資料:

DateTime[CalendarYear]

ProductCategory[ProductCategoryName]

[Sales Amount (USD)]

[Discount Amount (USD)]

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

Components

2008052.706

39.9266

2005

Components

574256.9865

0

2006

Components

3428213.05

948.7674

2007

Components

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

Accessories

153299.924

865.5945

2005

Accessories

18594.4782

4.293

2006

Accessories

86612.7463

1061.4872

2007

Accessories

275794.8403

4756.6546

進階 SUMMARIZE 選項

含有 ROLLUP 的 SUMMARIZE

加入 ROLLUP() 語法會將積存資料列加入至 groupBy_columnName 資料行的結果,因而修改 SUMMARIZE 函數的行為。

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

ROLLUP 參數

  • groupBy_columnName
    要用來根據找到的值建立摘要群組之現有資料行的限定名稱。 這個參數不能是運算式。

注意:所有其他 SUMMARIZE 參數之前都已經說明過,不再贅述。

備註

  • ROLLUP 運算式中提及的資料行無法當做 groupBy_columnName 資料行的一部分參考。

範例

下列範例會將積存資料列加入至 SUMMARIZE 函數呼叫的群組依據資料行。

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]

[Sales Amount (USD)]

[Discount Amount (USD)]

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

Components

2008052.706

39.9266

2005

Components

574256.9865

0

2006

Components

3428213.05

948.7674

2007

Components

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

Accessories

153299.924

865.5945

2005

Accessories

18594.4782

4.293

2006

Accessories

86612.7463

1061.4872

2007

Accessories

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

ROLLUPGROUP() 可以用來計算小計的群組。 如果用來取代 ROLLUP,ROLLUPGROUP 會經由將積存資料列加入至 groupBy_columnName 資料行的結果而產生相同的結果。 不過,在 ROLLUP 語法中加入 ROLLUPGROUP() 的做法可以用來避免積存資料列中產生部分小計。

下面範例只會顯示所有年份和類別目錄的總計,而不會顯示所有類別目錄每一年的小計:

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]

[Sales Amount (USD)]

[Discount Amount (USD)]

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

Components

2008052.706

39.9266

2005

Components

574256.9865

0

2006

Components

3428213.05

948.7674

2007

Components

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

Accessories

153299.924

865.5945

2005

Accessories

18594.4782

4.293

2006

Accessories

86612.7463

1061.4872

2007

Accessories

275794.8403

4756.6546

76494758.25

527507.9262

含有 ISSUBTOTAL 的 SUMMARIZE

可讓使用者在 Summarize 函數中建立其他資料行。如果資料列包含當做引數提供給 ISSUBTOTAL 之資料行的小計值,則傳回 True,否則傳回 False。

SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, ROLLUP(<groupBy_columnName>[,< groupBy_columnName>…])][, <name>, {<expression>|ISSUBTOTAL(<columnName>)}]…)

ISSUBTOTAL 參數

  • columnName
    位於 SUMMARIZE 函數之 table 中任何資料行的名稱,或是位於 table 之相關資料表中任何資料行的名稱。

傳回值

如果資料列包含當做引數提供之資料行的小計值,則為 True 值,否則傳回 False。

備註

  • ISSUBTOTAL 只能用於屬於 SUMMARIZE 函數一部分的運算式中。

  • ISSUBTOTAL 前面必須加上相符的 name 資料行。

範例

下列範例會針對給定 SUMMARIZE() 函數呼叫中的每個 ROLLUP() 資料行產生 ISSUBTOTAL() 資料行。

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])
)

下表顯示資料的預覽,如同任何預期接收資料表之函數所收到的資料:

[Is Sub Total for DateTimeCalendarYear]

[Is Sub Total for ProductCategoryName]

DateTime[CalendarYear]

ProductCategory[ProductCategoryName]

[Sales Amount (USD)]

[Discount Amount (USD)]

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

Components

2008052.706

39.9266

FALSE

FALSE

2005

Components

574256.9865

0

FALSE

FALSE

2006

Components

3428213.05

948.7674

FALSE

FALSE

2007

Components

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

Accessories

153299.924

865.5945

FALSE

FALSE

2005

Accessories

18594.4782

4.293

FALSE

FALSE

2006

Accessories

86612.7463

1061.4872

FALSE

FALSE

2007

Accessories

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