hive
hql
多维数据
聚合
提示
Hive SQL 教程 编写中,使用过程中有任何建议,提供意见、建议、纠错、催更加微信 gairuo123。欢迎关注本教程作者新书《深入浅出Pandas:利用Python进行数据处理与分析》 。作者开办 Python 数据分析培训,详情 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 后边字段的顺序。