Grouping Sets、CUBE、ROLLUP总结

本文详细介绍了MaxCompute中的GroupingSets、CUBE和ROLLUP功能,它们用于多维度的数据聚合。GroupingSets提供了一种更高效的方式来替代多个UNION ALL,而CUBE和ROLLUP则分别通过枚举所有组合和层级聚合的方式简化复杂分组。此外,还提到了GROUPING和GROUPING_ID函数,帮助处理分组结果中的NULL。最后,文章对比了GroupingSets与其他聚合方法如LATERAL VIEW EXPLODE的适用场景,指出在不同需求下选择合适的方法能提高分析效率。


目录

Grouping Sets

CUBE and ROLLUP

GROUPING和GROUPING_ID函数

Grouping Sets、CUBE 、ROLLUP 、LATERAL VIEW EXPLODE 区别


Grouping Sets

对于经常需要对数据进行多维度的聚合分析的场景,您既需要对a列做聚合,也要对b列做聚合,同时要按照a,b两列同时做聚合,因此需要写很多UNION ALL。但使用Grouping Sets可以非常快速方便地解决此类问题。

MaxCompute中的Grouping Sets功能是对SELECT语句中,Group By子句的扩展,允许您采用多种方式对结果分组,而不必使用多个SELECT语句来实现这一目的。这样能够使MaxCompute的引擎给出更有效的执行计划,从而提高执行性能。

实现示例

准备数据

create table requests LIFECYCLE 20 as

select * from values

(1, 'windows', 'PC', 'Beijing'),

(2, 'windows', 'PC', 'Shijiazhuang'),

(3, 'linux', 'Phone', 'Beijing'),

(4, 'windows', 'PC', 'Beijing'),

(5, 'ios', 'Phone', 'Shijiazhuang'),

(6, 'linux', 'PC', 'Beijing'),

(7, 'windows', 'Phone', 'Shijiazhuang')

as t(id, os, device, city);

您可以通过以下两种方式进行分组。<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值