Hive 多维度聚合分析查询

熟练使用多维度聚合函数,可以帮助开发者减少在处理数据时需要根据不同维度多次union query的代码编写工作

Hive常见的多维度聚合函数有:

  1. With Cube:任意维度聚合
  2. Grouping Sets:指定维度聚合
  3. With Rollup:GROUP BY最左侧的维度为主层级聚合

函数说明

1、with cube

1)语法:GROUP BY a,b WITH CUBE。

2)作用:根据Group BY维度的所有可能组合进行聚合。类似于Apache Kylin的Cube多维立方体概念。n个维度会有2的n次方种组合。

-- 查询query
select day_id
,platform
,count(1) num
from user_action_log 
where day_id = '2019-01-01'
group by day_id,platform
with cube

结果:

  day_id platform num
1 2019-05-10 Android 300
2 NULL Android 300
3 2019-05-10 iOS 100
4 NULL iOS 100
5 2019-05-10 NULL 400
6 NULL NULL 400

2、grouping sets

1)语法:GROUP BY a,b GROUPING SETS (a,b)

2)作用:根据GROUPING SETS指定维度组合进行聚合。是Cube的一部分。Grouping Sets 分组(Grouping) 集(Sets),是多个分组的并集。等价于Union ALL单个分组结果。如grouping sets(A,B) 等价于...group by null,B union all ...group by A,null结果:

  day_id platform num
1 2019-01-01 iOS 100
2 2019-01-01 Android 300
3 2019-01-01 NULL 400


3、with rokllup

1)语法:GROUP BY a,b,c WITH ROLLUP

2)作用:以GROUP BY最左侧的维度为主,从该维度的角度去上卷、下钻。是Cube的一部分

-- 查询Query
select day_id
,platform
,count(1) num
from user_action_log
where day_id = '2019-01-01'
group by day_id,platform
with rollup

结果:

  day_id platform num
1 2019-05-10 iOS 100
2 2019-05-10 NULL 400
3 2019-05-10 Android 300
4 NULL NULL 400

 

你可能感兴趣的:(Hive)