提示
Hive SQL 教程 欢迎使用。提供建议、纠错、催更等加作者微信: gairuo123(备注:sql )和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在 Hive SQL 进行多维分析时, Grouping__ID
功能可以标示结果属于哪一个分组集合,对应如果参与聚合为 1,不参与为 0,列按顺序从右向左最终组合一个二进制数,以十进制显示出来。
在 Hive SQL 多维分析显示聚合结果时,对于维度中,没有此列的其值为 null,有些情况下它本身属于维度但列如果列本身有一些空值,这样就无计让人判断其是空值还是未能回维度计算。
分组 ID 函数就是解决这个问题的方法。此函数返回与每列是否存在对应的位向量。对于每一列,如果结果集中的某一行已在该行中聚合,则会为该行生成一个值“1”,否则该值为“0”。这可用于区分数据中是否存在空值。
id 标记取决于 group by 中表达式的顺序,因此重新排列 group by 可以更改标志的含义。
比如,有 A、B 两列数据:
a b
x 3
x 1
多维分析时,我们增加 Grouping__ID
功能:
SELECT a, b, grouping__id as gid, count(*) as cnt
FROM ods.tab1
GROUP BY a, b
with cube
ORDER BY gid
将产生以下结果:
a | b | gid | cnt |
---|---|---|---|
NULL | NULL | 0 | 2 |
x | NULL | 1 | 2 |
NULL | 3 | 2 | 1 |
NULL | 1 | 2 | 1 |
x | 3 | 3 | 1 |
x | 1 | 3 | 1 |
我们看看 gid(Grouping__ID
已按此排序)列:
因为我们用 with cube 做的全维度分析。
更新时间:2022-06-08 20:37:16 标签:hive sql hql 分组