hive
sql
hql
提示
Hive SQL 教程 编写中,使用过程中有任何建议,提供意见、建议、纠错、催更加微信 gairuo123。欢迎关注本教程作者新书《深入浅出Pandas:利用Python进行数据处理与分析》 。作者开办 Python 数据分析培训,详情 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 |