HiveSQL实战积累_groupingsets加lvlcode实现快速多维度预聚合与关联
1.SQL实例
1 | select |
知识要点1:使用grouping sets实现在同一个sql中同时对多个维度组合进行聚合计算,并使用grouping__id对相应的被聚合维度列赋上默认值。其实我觉得这个可以用coalesce()来实现同样的效果。
知识要点2:使用grouping__id为每一个维度组合赋上独有的lvlcode,使得不同的select语句中的相同维度组合的结果可以使用lvlcode关联到最终结果表的同一行中。
知识要点3:一定要注意不同计算引擎的grouping__id计算方式是不同的,上述sql中使用的是hive的生产规则,按照group by字段的倒叙,出现的置1,未出现的置0。而spark引擎则正好是相反的规则,所以上述sql只能用hive来执行,如果要用spark来执行必须重写所有grouping__id值才能正确对应上。