0
点赞
收藏
分享

微信扫一扫

SQL面试题-Hive中Cube使用

SQL面试题-Hive中Cube使用_hive
需求:求 app,channel,province 任意组合下的用户数,用一个 sql 实现,上面一 条记录会产生多条记录。

hive> select * from app;
OK
消消乐 ios 北京 abc
王者荣耀 Android 上海 cde
Time taken: 0.479 seconds, Fetched: 2 row(s)
hive> select app,channel,province,count(userid) as total_user_count from app group by app,channel,province with cube;
Total MapReduce CPU Time Spent: 9 seconds 350 msec
OK
NULL NULL NULL 2
NULL NULL 上海 1
NULL NULL 北京 1
NULL Android NULL 1
NULL Android 上海 1
NULL ios NULL 1
NULL ios 北京 1
消消乐 NULL NULL 1
消消乐 NULL 北京 1
消消乐 ios NULL 1
消消乐 ios 北京 1
王者荣耀 NULL NULL 1
王者荣耀 NULL 上海 1
王者荣耀 Android NULL 1
王者荣耀 Android 上海 1
Time taken: 82.009 seconds, Fetched: 15 row(s)
hive> select app,channel,province,count(userid) as total_user_count from app group by app,channel,province with rollup;
Total MapReduce CPU Time Spent: 6 seconds 440 msec
OK
NULL NULL NULL 2
消消乐 NULL NULL 1
消消乐 ios NULL 1
消消乐 ios 北京 1
王者荣耀 NULL NULL 1
王者荣耀 Android NULL 1
王者荣耀 Android 上海 1
Time taken: 53.346 seconds, Fetched: 7 row(s)
hive> select app,channel,province,count(userid) as total_user_count from app group by app,channel,province grouping sets((app),(app,province));
Total MapReduce CPU Time Spent: 6 seconds 150 msec
OK
消消乐 NULL NULL 1
消消乐 NULL 北京 1
王者荣耀 NULL NULL 1
王者荣耀 NULL 上海 1
Time taken: 42.786 seconds, Fetched: 4 row(s)
  • CUBE 生成的结果集显示了所选列中值的所有组合的聚合。
  • ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。
  • 仅在与包含 CUBE 或 ROLLUP 运算符的 GROUP BY 子句相关联的选择列表中才允许分组。


举报

相关推荐

0 条评论