hive 不同维度聚合 grouping sets 使用详情

当结构数据表中,多列维度字段场景,
需要看不同维度聚合后的数据集时。

整体 demo sql

复制代码
select	
			if(CAST (GROUPING__ID AS INT) & 8=0, A, 'all') as A
			,if(CAST (GROUPING__ID AS INT) & 4=0, B, 'all') as B
			,C
			,D
from table_name
where dt = '${dt}'
group by
			A
			,B
			,C
			,D	
GROUPING SETS(
			(A)		
			,(B)
			,(C)	
			,(D)	
			
			,(A,B)	
			,(A,C)
			,(A,D)
			,(B,C)	
			,(B,D)	
			,(C,D)	
			
			,(A,B,C)	
			,(A,B,D)	
			,(A,C,D)	
			,(B,C,D)	
			
			,(A,B,C,D)	

下面进行sql逐步拆解分析(建议三个模块结合着看,会更快理解该语法)

1.第一模块

复制代码
select	
			-- A 的二进制为 8 ,如果 GROUPING__ID & 8=0 则取A值,否值为 all 
			if(CAST (GROUPING__ID AS INT) & 8=0, A, 'all') as A
			
			-- & 运算符使用
			--	0	1	1	1	二进制数对应的十进制数为	7
			--	1	0	0	0	二进制数对应的十进制数为	8
			--	演示 7 & 8(1表示 真 、0表示 假;真真得真,真假得假,假假得假)
			--	0	1	1	1
			--	1	0	0	0
			-----------------
			--	0	0	0	0	该二进制对应的十进制为0
			-- 则 7 & 8 =0
			
			
			-- A 的二进制为 4 ,如果 GROUPING__ID & 4=0 则取B值,否值为 all 
			,if(CAST (GROUPING__ID AS INT) & 4=0, B, 'all') as B
			,C
			,D

2.第二模块 (接着第一模块叙述)

复制代码
from table_name
where dt = '${dt}'
group by
			A
			,B
			,C
			,D
			
--	A	B	C	D	出现在 group by 后的位置
--	3	2	1	0	二进制排位(最先出现在group by 后的排二进制最高位)
--	8	4	2	1	二进制转化为十进制值

3.第三模块(接着第二模块叙述)

复制代码
GROUPING SETS(
			(A)		-- GROUPING__ID 值为 7
			,(B)	-- GROUPING__ID 值为 11
			,(C)	-- GROUPING__ID 值为 13
			,(D)	-- GROUPING__ID 值为 14
			
			,(A,B)	-- GROUPING__ID 值为 3
			,(A,C)	-- GROUPING__ID 值为 5
			,(A,D)	-- GROUPING__ID 值为 6
			,(B,C)	-- GROUPING__ID 值为 9
			,(B,D)	-- GROUPING__ID 值为 10
			,(C,D)	-- GROUPING__ID 值为 12
			
			,(A,B,C)	-- GROUPING__ID 值为 1
			,(A,B,D)	-- GROUPING__ID 值为 2
			,(A,C,D)	-- GROUPING__ID 值为 4
			,(B,C,D)	-- GROUPING__ID 值为 8
			
			,(A,B,C,D)	-- GROUPING__ID 值为 0 
)

附加测试语法

复制代码
-- 将二进制化转化为十进制
rpad(reverse(bin(cast(GROUPING__ID AS bigint))),16,'0') 
相关推荐
AC赳赳老秦2 小时前
代码生成超越 GPT-4:DeepSeek-V4 编程任务实战与 2026 开发者效率提升指南
数据库·数据仓库·人工智能·科技·rabbitmq·memcache·deepseek
心疼你的一切2 小时前
拆解 CANN 仓库:实现 AIGC 文本生成昇腾端部署
数据仓库·深度学习·aigc·cann
心疼你的一切3 小时前
模态交响:CANN驱动的跨模态AIGC统一架构
数据仓库·深度学习·架构·aigc·cann
心疼你的一切4 小时前
解锁CANN仓库核心能力:从零搭建AIGC轻量文本生成实战(附代码+流程图)
数据仓库·深度学习·aigc·流程图·cann
秃了也弱了。5 小时前
StarRocks:高性能分析型数据仓库
数据仓库
心疼你的一切6 小时前
数字智人:CANN加速的实时数字人生成与交互
数据仓库·深度学习·aigc·交互·cann
心疼你的一切7 小时前
语音革命:CANN驱动实时语音合成的技术突破
数据仓库·开源·aigc·cann
心疼你的一切7 小时前
解构CANN仓库:AIGC API从底层逻辑到实战落地,解锁国产化AI生成算力
数据仓库·人工智能·深度学习·aigc·cann
心疼你的一切7 小时前
基于CANN仓库算力手把手实现Stable Diffusion图像生成(附完整代码+流程图)
数据仓库·深度学习·stable diffusion·aigc·流程图·cann
鸿乃江边鸟7 小时前
Spark Datafusion Comet 向量化Rust Native--CometShuffleExchangeExec怎么控制读写
大数据·rust·spark·native