hive的group by的with cube、with rollup、 grouping sets()

本文介绍了Hive中用于数据分组的高级特性,包括with cube用于生成所有可能的维度组合,with rollup进行维度上卷操作,以及grouping sets()允许自定义分组组合。通过实例展示了这些功能如何在实际数据分析中提升效率。
摘要由CSDN通过智能技术生成

准备数据

create table du_test1 (
    f1 string,
    f2 string,
    f3 string,
    cnt int);

insert into table du_test1 
VALUES 
('A', 'A', 'B', 1),
('B', 'B', 'A', 1),
('A', 'A', 'A', 2);

with cube:维度全组合

select
f1, 
f2, 
f3, 
sum(cnt),
GROUPING__ID
from du_test1
group by f1, f2, f3 with cube
--相当于group by f1, f2, f3 grouping sets(
--     (),
--     (f1),
--     (f2),
--     (f3),
--     (f1, f2),
--     (f1, f3),
--     (f2, f3),
--     (f1, f2, f3)
-- )
order by 5;


f1	    f2	    f3	    _c3	    grouping__id
A   	A   	B   	1   	0
A   	A   	A   	2   	0
B   	B   	A   	1   	0
A   	A   	NULL    3   	1
B   	B   	NULL    1   	1
A   	NULL    A   	2   	2
B   	NULL    A   	1   	2
A   	NULL    B   	1   	2
B   	NULL    NULL    1   	3
A   	NULL    NULL    3   	3
NULL    A   	B   	1   	4
NULL    B   	A   	1   	4
NULL    A   	A   	
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值