DAX 其他 - GROUPBY 函数



描述

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

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

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

语法

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

参数

序号 术语和定义
1

table

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

2

groupBy_columnName1

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

此参数不能为表达式。

3

name

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

4

expression

任何返回单个标量值的 DAX 表达式,其中表达式将针对每组 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 定义结果中列的名称。第二个参数 expression 定义执行的计算以获得该列中每一行的值。

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

  • 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.htm
广告
© . All rights reserved.