提示
Hive SQL 教程 欢迎使用。提供建议、纠错、催更等加作者微信: gairuo123(备注:sql )和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
hive sql 多维分析时,Grouping_ID 可以标记此行数据属于数个维度,但如果我们给定几个列想知道它属于哪个维度怎么办呢?这时就用到了Grouping 函数。
可以使用 Grouping 函数, 它来表达 GROUPBY 中是否针对给定行进行聚合,这些维度会出现在列上。
0 表示属于分组集的列,1 表示不属于分组集的列。简单说就是这些维度会出现在列上。
比如对于数据:
a b
1 NULL
1 1
2 2
3 3
3 NULL
4 5
通过 SQL:
SELECT a, b, GROUPING__ID,
grouping(a, b), grouping(b, a), grouping(a), grouping(b),
count(*)
FROM T1
GROUP BY a, b WITH ROLLUP;
得到:
a | b | GROUPING__ID | grouping(a, b) | grouping(a, b) | grouping(a) | grouping(b) | count(*) |
---|---|---|---|---|---|---|---|
NULL | NULL | 3 | 3 | 3 | 1 | 1 | 6 |
4 | NULL | 1 | 1 | 2 | 0 | 1 | 1 |
4 | 5 | 0 | 0 | 0 | 0 | 0 | 1 |
3 | NULL | 1 | 1 | 2 | 0 | 1 | 2 |
3 | NULL | 0 | 0 | 0 | 0 | 0 | 1 |
3 | 3 | 0 | 0 | 0 | 0 | 0 | 1 |
2 | NULL | 1 | 1 | 2 | 0 | 1 | 1 |
2 | 2 | 0 | 0 | 0 | 0 | 0 | 1 |
1 | NULL | 1 | 1 | 2 | 0 | 1 | 2 |
1 | NULL | 0 | 0 | 0 | 0 | 0 | 1 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
更新时间:2022-06-08 21:23:47 标签:hive sql hql