跳到主要内容

grouping:分组标识

速查结论

grouping(col) 是 Spark SQL 中用于判断 GROUP BY 列在聚合结果中是否被汇总的聚合函数。

语法

grouping(col)

参数说明

参数说明
colGROUP BY 子句中指定的列名

函数返回 1 表示该列在当前行中被聚合(汇总),返回 0 表示该列未被聚合(保留原始值)。常用于 ROLLUP、CUBE 或 GROUPING SETS 产生的汇总行与明细行的区分。

示例

> SELECT name, grouping(name), sum(age) FROM VALUES (2, 'Alice'), (5, 'Bob') people(age, name) GROUP BY cube(name);
Alice 0 2
Bob 0 5
NULL 1 7

常见报错与避坑指南

  • NULL 值与汇总行的区分:当原始数据中包含 NULL 值时,仅凭列值是否为 NULL 无法区分明细行和汇总行。grouping 函数可以明确区分:grouping 返回 1 表示汇总行。
  • grouping 与 grouping_id 的配合:grouping_id 返回的是多个列 grouping 值的位图编码,适合在多维分析中快速判断汇总级别。

Since: 2.0.0

📱关注公众号

「数据仓库技术」文章同步更新,不错过每一篇干货

微信公众号二维码
💬加群交流

备注「数据仓库技术」加入社群,每日一道大厂SQL真题

交流微信二维码

你可能还想看