GROUPBY

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

注意

不建议将此函数用于 视觉计算,因为它可能会返回毫无意义的结果。

GROUPBY 函数类似于 SUMMARIZE 函数。 但是,GROUPBY 对添加的任何扩展列执行隐式 notCALCULATE。 GROUPBY 允许在它添加的扩展列中的聚合函数内使用新函数 CURRENTGROUP。 GROUPBY 用于在单个表扫描中执行多个聚合。

语法

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

参数

术语 定义
table 返回数据表的任何 DAX 表达式。
groupBy_columnName 表中现有列的名称(orrelated 表中),数据将分组依据。 此参数不能是表达式。
name 提供给要添加到 GroupBy 列列表中的新列的名称,括在双引号中。
expression 其中一个 X 聚合函数,其中 first 参数 CURRENTGROUP()。 有关支持的 X 聚合函数的完整列表,请参阅下面的“使用 CURRENTGROUP”部分。

返回 value

具有groupBy_columnName参数的选定列的表,and 名称参数指定的扩展列。

言论

  • GROUPBY 函数执行以下操作:

    1. 从指定的表开始(andallrelated“to-one”方向的表)。

    2. 使用 all 列的 GroupBy 创建分组(步骤 1 中表中需要存在)。

    3. 每个组是结果中的一行,但表示原始表中的一组行。

    4. 对于每个组,evaluate 要添加的扩展列。 与 SUMMARIZE 函数不同,CALCULATE 执行隐式 not,and 该组不会放置在 filter 上下文中。

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

  • groupBy_columnName 必须位于 or 表中的表 related 中。

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

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

  • GROUPBY 主要用于对 DAX 表表达式的中间结果执行聚合。 若要在模型中对物理表进行高效聚合,请考虑使用 SUMMARIZECOLUMNSorSUMMARIZE 函数。

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

使用 CURRENTGROUP

CURRENTGROUP 只能在定义 GROUPBY 函数中的扩展列的表达式中使用。 在effect中,CURRENTGROUP 从属于 GROUPBY 结果当前行的 GROUPBY 的表参数中返回一组行。 CURRENTGROUP 函数不采用任何参数,and 仅作为以下聚合函数之一的 first 参数:AVERAGEXCOUNTAXCOUNTXGEOMEANXMAXXMINXPRODUCTXSTDEVX.SSTDEVX.PSUMXVARX.SVARX.P

以下示例 first 通过使用 and 函数计算按国家/地区 productSUMMARIZECOLUMNS 类别分组的总销售额。 然后,它使用 GROUPBY 函数扫描 first 步骤中的中间结果,以 findproduct 类别中每个国家/地区的最大销售额。

DEFINE
VAR SalesByCountryAndCategory =
SUMMARIZECOLUMNS(
Geography[Country],
Product[Category],
"Total Sales", SUMX(Sales, Sales[Price] * Sales[Qty])
)

EVALUATE
GROUPBY(
SalesByCountryAndCategory,
Geography[Country],
"Max Sales", MAXX(CURRENTGROUP(), [Total Sales])
)

SUMMARIZE 函数SUMMARIZECOLUMNS 函数