DAX 其他 - GROUPBY 函数

描述

返回包含一组选定列的表。允许 DAX CURRENTGROUP 函数在其添加的扩展列中的聚合函数内使用。GROUPBY 尝试重用已分组的数据,使其性能更高。

DAX GROUPBY 函数类似于 DAX SUMMARIZE 函数。但是,GROUPBY 不会对其添加的任何扩展列执行隐式计算。

DAX GROUPBY 函数是 Excel 2016 中的新功能。

语法

GROUPBY (<table>, [<groupBy_columnName1>], [<name>, <expression>] …) 

参数

Sr.No. 术语和定义
1

table

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

2

groupBy_columnName1

表中(或相关表中)现有列的名称,数据将根据该列进行分组。

此参数不能是表达式。

3

name

要添加到 GroupBy 列列表中的新列的名称,用双引号括起来。

4

expression

任何返回单个标量值,其中表达式将针对每组 GroupBy 值进行求值。

  • 它可以包含任何"X"聚合函数,例如 SUMX、AVERAGEX、MINX、MAXX 等。当以这种方式使用其中一个函数时,表参数(即表表达式)可以由 CURRENTGROUP 函数替换。(有关详细信息,请参阅备注部分)。

  • 但是,CURRENTGROUP 函数只能在表达式中表扫描的顶层使用。这意味着,

    • ABS (SUMX (CURRENTGROUP (), [Column])) 是允许的,因为 ABS 不执行扫描。

    • 但是,不允许使用 SUMX (<table>, SUMX (CURRENTGROUP () …))。

  • 表达式中不允许使用 DAX CALCULATE 函数和计算字段

返回值

包含 groupBy_columnName 参数选定列和 name 参数指定的分组列的表。

备注

GROUPBY 函数执行以下操作 −

  • 从指定的表(以及所有相关表)开始在"一对一"方向上)。

  • 使用所有 GroupBy 列(这些列必须存在于步骤 1 中的表中)创建分组。

  • 每个组在结果中占一行,但代表原始表中的一组行。

  • 对于每个组,评估要添加的扩展列。与 SUMMARIZE 函数不同,不会执行隐式 CALCULATE,并且不会将组放入筛选上下文中。

参数

  • 您为其定义名称的每个列都必须具有相应的表达式。否则,将返回错误。

    • 第一个参数 name 定义结果中列的名称。第二个参数表达式定义了为获取该列中每行的值而执行的计算。

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

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

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

CURRENTGROUP ()

  • CURRENTGROUP 函数只能在定义 GROUPBY 函数内列的表达式中使用。

  • CURRENTGROUP 从 GROUPBY 的表参数中返回一组属于 GROUPBY 结果当前行的行。

  • CURRENTGROUP 函数不接受任何参数,仅支持作为以下聚合函数之一的第一个参数:AverageX、CountAX、CountX、GeoMeanX、MaxX、MinX、ProductX、StDevX.S、StDevX.P、SumX、VarX.S、VarX.P。

示例

= GROUPBY ( 
   Sales,Sales[Salesperson],Products[Product],"Total Sales",  
   SUMX (CURRENTGROUP (),[Sales Amount]) 
)

dax_functions_other.html