SUMMARIZE 函数 (DAX)

针对一系列组所请求的总计返回摘要表。

语法

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

参数

  • table
    任何返回数据表的 DAX 表达式。

  • groupBy_columnName
    (可选)现有列的限定名称,将使用该列中找到的值创建摘要组。 此参数不能是表达式。

  • name
    给予总计或汇总列的名称,包含在双引号内。

  • expression
    任何返回单个标量值的 DAX 表达式,其中,表达式将计算多次(针对每行/上下文)。

返回值

其中包含 groupBy_columnName 参数的选定列和由名称参数设计的汇总列的表。

注释

  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 选项

SUMMARIZE(含 ROLLUP)

添加 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() 可用于计算不同分组的小计。 如果使用 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

SUMMARIZE(含 ISSUBTOTAL)

使用户能够在 Summarize 函数中创建另一列,如果行中包含作为参数提供给 ISSUBTOTAL 的列的小计值,则返回 True,否则返回 False。

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

ISSUBTOTAL 参数

  • columnName
    SUMMARIZE 函数的表中任何列的名称,或该表的相关表中任何列的名称。

返回值

如果行中包含作为参数提供的列的小计值,则返回 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

FLASE

FLASE

FLASE

2008

Bikes

12968255.42

36167.6592

FLASE

FLASE

2005

Bikes

6958251.043

4231.1621

FLASE

FLASE

2006

Bikes

18901351.08

178175.8399

FLASE

FLASE

2007

Bikes

24256817.5

276065.992

FLASE

FLASE

2008

Components

2008052.706

39.9266

FLASE

FLASE

2005

Components

574256.9865

0

FLASE

FLASE

2006

Components

3428213.05

948.7674

FLASE

FLASE

2007

Components

5195315.216

4226.0444

FLASE

FLASE

2008

Clothing

366507.844

4151.1235

FLASE

FLASE

2005

Clothing

31851.1628

90.9593

FLASE

FLASE

2006

Clothing

455730.9729

4233.039

FLASE

FLASE

2007

Clothing

815853.2868

12489.3835

FLASE

FLASE

2008

Accessories

153299.924

865.5945

FLASE

FLASE

2005

Accessories

18594.4782

4.293

FLASE

FLASE

2006

Accessories

86612.7463

1061.4872

FLASE

FLASE

2007

Accessories

275794.8403

4756.6546

FLASE

TRUE

FLASE

TRUE

2008

15496115.89

41224.3038

FLASE

TRUE

2005

7582953.67

4326.4144

FLASE

TRUE

2006

22871907.85

184419.1335

FLASE

TRUE

2007

30543780.84

297538.0745

TRUE

TRUE

76494758.25

527507.9262