SUMMARIZE

适用于:计算列计算表Measure视觉计算

返回一个摘要表,显示对一组函数的请求总数。

语法

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

parameters

术语 定义
table 返回数据表的任何 DAX 表达式。
groupBy_ColumnName (可选)现有列的限定名称,用于基于在其中找到的 values 创建摘要组。 此参数不能是表达式。
name 以双引号括起来的总 orsummarize 列的名称。
expression 返回单个标量 value的任何 DAX 表达式,其中表达式将多次计算(对于每行/上下文)。

返回 value

包含 groupBy_columnName 参数的选定列的表,and 名称参数设计的汇总列。

备注

  • define 名称的每个列都必须具有相应的表达式;否则,将返回 error。 first 参数名称定义结果中的列的名称。 second 参数表达式定义为获取该列中每一行的 value 而执行的计算。

  • groupBy_columnName必须位于 related 表中的 tableor 中才能 table

  • 每个名称都必须用双引号引起来。

  • 该函数通过一组 or 更多groupBy_columnName列的 values 将所选行分组到一组摘要行中。 为每个组返回一行。

  • 在计算列 or 行级别安全性 (RLS) 规则中使用时,not 支持在 DirectQuery 模式下使用此函数。

示例

以下示例返回按 calendaryearandproduct 类别名称分组的经销商销售摘要,此结果表允许通过 yearandproduct 类别对经销商销售进行分析。

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] [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 组件 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 Accessories 153299.924 865.5945
2005 Accessories 18594.4782 4.293
2006 Accessories 86612.7463 1061.4872
2007 Accessories 275794.8403 4756.6546

使用 ROLLUP

添加 ROLLUP 语法通过向groupBy_columnName列的结果添加 rollup 行来修改 SUMMARIZE 函数的行为。 ROLLUP 只能在 SUMMARIZE 表达式中使用。

示例

以下示例将 rollup 行添加到 SUMMARIZE 函数调用的 Group-By 列:

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 组件 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 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

ROLLUP 语法中添加 ROLLUPGROUP 可用于防止 rollup 行中的部分分类汇总。 ROLLUPGROUP 只能在 ROLLUPROLLUPADDISSUBTOTALorROLLUPISSUBTOTAL 表达式中使用。

示例

以下示例仅显示总 all 年 and 类别的总和,而没有每个类别 year 的分类汇总,其中包含 all 类别:

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 组件 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 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

使用 ISSUBTOTAL,可以在 SUMMARIZE 表达式中创建另一列,该表达式返回 Trueif 列 contains 小计 values 作为参数的列 ISSUBTOTAL,否则返回 False。 ISSUBTOTAL 只能在 SUMMARIZE 表达式中使用。

示例

以下 sample 为给定 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 组件 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 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

SUMMARIZECOLUMNS