GROUPBY
注意
不建议将此函数用于 视觉计算,因为它可能会返回毫无意义的结果。
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 函数执行以下操作:
从指定的表开始(andallrelated“to-one”方向的表)。
使用 all 列的 GroupBy 创建分组(步骤 1 中表中需要存在)。
每个组是结果中的一行,但表示原始表中的一组行。
对于每个组,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 参数:AVERAGEX、COUNTAX、COUNTX、GEOMEANX、MAXX、MINX、PRODUCTX、STDEVX.S、STDEVX.P、SUMX、VARX.S、VARX.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])
)