Hive03---Hive中的Grouping Sets用法

  统计报表中,通常会有多个维度组合,对应一个指标的情况,如指标-DAU,维度可能是{(APP),(APP、终端),(APP、版本号)}等等。如果每一种维度组合都建一张表,开发需要维护多个结果表,增加开发成本;也可以把不同的维度组合UNION ALL,这样ETL的脚本比较臃肿。Grouping Sets可以解决这个问题。
  假设有一张用户埋点日志表:

appappverformosdevice
淘宝1.1.0app安卓123
淘宝1.2.0小程序IOS234
京东1.2.1M站IOS256

SQL:

SELECT TO_CHAR(TO_DATE(ts,'yyyymmdd'),'yyyy-mm-dd') AS statistic_date,
       app,
       appver,
       form,
       os,
       grouping(app) AS g_app,
       grouping(appver) AS g_appver,
       grouping(form) AS g_form,
       grouping(os) AS g_os,
       grouping_id(app,appver,form,os) AS grouping_id,
       COUNT(DISTINCT device) AS DAU
FROM tracking_data
WHERE ts=20190820
GROUP BY app,
         appver,
         form,
         os
GROUPING
SETS (
(app,form),
(app,form,appver),
(app,form,os),
(app,form,appver,os)
)

后续,可以根据g_app、g_appver、g_form、g_os进行维度选择,不选则令g_*=1

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值