grouping:分组标识
速查结论
grouping(col) 是 Spark SQL 中用于判断 GROUP BY 列在聚合结果中是否被汇总的聚合函数。
语法
grouping(col)
参数说明
| 参数 | 说明 |
|---|---|
| col | GROUP 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真题
