【Hive】Hive高级聚合(grouping sets、rollup、cube)

Hive高级聚合(0.10开始支持)

高级聚合功能相当于group by 加强

grouping sets:多个group by 进行union all,在同一个数据集进行多重group by
      该关键字可以实现同一数据集的多重group by操作。事实上GROUPING SETS是多个GROUP BY进行UNION ALL操作的简单表达,它仅仅使用一个stage完成这些操作。GROUPING SETS的子句中如果包含()数据集,则表示整体聚合。

select name,work_space[0] from employee group by name, work_space[0] grouping sets((name,work_space[0]),name,());

// 上面语句与下面语句等效

select name, work_space[0] as main_place, count(employee_id) as emp_id_cnt

from employee

group by name, work_space[0]
UNION ALL
select name, work_space[0] as main_place, count(employee_id) as emp_id_cnt

from employee

group by name

UNION ALL
select name, work_space[0] as main_place, count(employee_id) as emp_id_cnt

from employee;

rollup  

group by a,b,c with rollup <=> grouping sets((a,b,c),(a,b),(a),())


cube

group by a,b,c with cube <=> grouping sets((a,b,c),(a,b),(a,c),(b,c),(a),(b),(c),())

参考:https://www.jianshu.com/p/9502e1d58f45

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值