提示
Hive SQL 教程 欢迎使用。提供建议、纠错、催更等加作者微信: gairuo123(备注:sql )和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
SQL 的 Rollup 子句是特殊的 Grouping Sets, 它以按层级聚合的方式产生 Grouping Sets,也可以与 Grouping Sets 组合使用。WITH ROLLUP 以最左侧的维度为主进行层级聚合。
一般语法是CUBE/ROLLUP。它仅由用户与组一起使用。多维数据集在其参数中创建列集合的所有可能组合的小计。一旦我们在一组维度上计算出一个立方体,我们就可以得到这些维度上所有可能的聚合问题的答案。
ROLLUP 子句与 GROUP BY 一起用于计算维度层次结构级别的聚合。
GROUP BY a, b, c with ROLLUP
假设层次结构是 a 向下钻至 b 向下钻至 c,得到维度 (a, b, c), (a, b), (a), ( )
。
以下是一个等效 SQL 的示例:
SELECT a,b,c,SUM(d) GROUP BY a, b, c WITH ROLLUP
-- 相当于
GROUP BY a, b, c GROUPING SETS ( (a, b, c), (a, b), (a), ())
每行明细按维度创建 4 行:
(a, b, c), (a, b, null), (a, null, null), (null, null, null)
如果想按其他层级依次聚合,可调整 GROUP BY 后边字段的顺序。
更新时间:2022-03-09 20:47:23 标签:hive hql 多维数据 聚合