SUMMARIZE 函数 (DAX)
针对一系列组所请求的总计返回摘要表。
语法
SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, <name>, <expression>]…)
参数
table
任何返回数据表的 DAX 表达式。groupBy_columnName
(可选)现有列的限定名称,将使用该列中找到的值创建摘要组。 此参数不能是表达式。name
给予总计或汇总列的名称,包含在双引号内。expression
任何返回单个标量值的 DAX 表达式,其中,表达式将计算多次(针对每行/上下文)。
返回值
其中包含 groupBy_columnName 参数的选定列和由名称参数设计的汇总列的表。
注释
您为其定义名称的每列必须具有一个对应的表达式;否则将返回错误。 第一个参数 name 定义了结果中此列的名称。 第二个参数 expression 定义了所执行的用来获取该列中每行的值的计算。
groupBy_columnName 必须在 table 或 table 的相关表中。
每个名称都必须用双引号引起来。
此函数按一个或多个 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 |