SUMMARIZE

适用于:计算列计算表度量值视觉计算

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

语法

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

parameters

术语 定义
返回数据表的任何 DAX 表达式。
groupBy_ColumnName (可选)要用于根据列中的值创建摘要组的现有列的限定名称。 此参数不能是表达式。
name 为总计或汇总列指定的名称,用双引号引起来。
表达式 返回单个标量值的任何 DAX 表达式,其中,表达式将被计算多次(针对每行/上下文)。

返回值

一个表,其中包含 groupBy_columnName 参数的选定列,以及名称参数设计的汇总列 。

备注

  • 为其定义名称的每个列都必须具有一个对应的表达式;否则,将返回错误。 第一个参数 name 定义结果中列的名称。 第二个参数 expression 定义为获取该列中每一行的值进行的计算。

  • groupBy_columnName 必须位于表中,或位于与表相关的表中 。

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

  • 函数根据一个或多个 groupBy_columnName 列的值将一组选定的行归组为一组摘要行。 为每个组返回一行。

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

示例

下面的示例返回按日历年和产品类别名称分组的经销商销售额的摘要,通过此结果表可以按年份和产品类别分析经销商销售额。

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 组件 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 列的结果中来修改 SUMMARIZE 函数的行为。 ROLLUP 只能在 SUMMARIZE 表达式中使用。

示例

下面的示例向 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 可用于防止汇总行中出现部分小计。 ROLLUPGROUP 只能在 ROLLUPROLLUPADDISSUBTOTALROLLUPISSUBTOTAL 表达式内使用。

示例

以下示例仅显示所有年份和类别的总计,而不显示所有类别的每年的小计:

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 表达式中创建另一列,如果该行包含给定为 ISSUBTOTAL 参数的列的小计值,则返回 True,否则返回 False。 ISSUBTOTAL 只能在 SUMMARIZE 表达式中使用。

示例

下面的示例为 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