hive
hql
多维数据
聚合
提示
Hive SQL 教程 编写中,本教程可以做为通用 SQL 的学习教程,用来学习 Spark SQL、Impala SQL、Presto,PostgreSQL、MySQL、Oracle、Microsoft SQL Server、SQLite 等数据存储的 SQL 用法。使用过程中有任何建议,提供意见、建议、纠错、催更加微信 sinbam。
本教程作者所著新书《深入浅出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 后边字段的顺序。