0


Hive增强的聚合、多维数据集、分组和汇总

Hive多维分析

春雨惊春清谷天,夏满芒夏暑相连;秋处露秋寒霜降,冬雪雪冬小大寒。今天是2023年的最后一个节气:大雪。大雪节气之后,全国气温显著下降,北方冷空气越发活跃。大家注意防寒保暖

进入正题,本文主要对照Hive介绍Hive、Spark、Presto查询引擎中的增强

GROUP BY

及相关语法,并通过多维场景案例分析详解三个引擎增强多维聚合语法之间的区别,以及使用中的一些常见问题

1、多维分析概述

在多维分析场景下,我们可能会用到高阶聚合函数,例如

GROUPING SETS

CUBE

ROLLUP

等。Hive、Spark、Presto等引擎都提供了类似的高阶聚合函数,以对不同维度组合下的数据进行聚合统计

Hive官方将这种分析称为

GROUP BY

子句增强的聚合、多维数据集、分组和汇总

那么,什么是增强聚合和多维分析呢?

增强聚合是指在SQL中使用分组聚合查询时,使用

GROUPING SETS

CUBE

ROLLUP

等子句进行操作。常见的查询引擎基本都支持这种语法,例如Hive、Spark、Presto、FlinkSQL等。使用增强聚合不仅可以简化SQL代码,而且还能提高SQL语句的性能

多维分析则是指多种维度组合的分析,而不是多种维度的分析。在多维分析场景下,可以还原任意维度组合下的维度列簇名称,以支持图表民主化的使用筛选器

多维分析主要用于多维度聚合,即多种维度组合并聚合结果

2、GROUPING SETS多维分组

Hive官方对

GROUPING SETS

的描述如下:

GROUP BY

中的

GROUPING SETS

子句允许我们在同一记录集中指定多个

GROUP BY

选项。所有

GROUPING SET

子句都可以用由

UNION

连接的多个

GROUP BY

查询来逻辑表示

Hive官方文档:https://cwiki.apache.org/confluence/display/Hive/Enhanced+Aggregation%2C+Cube%2C+Grouping+and+Rollup

简单来说就是指定多组维度作为

GROUP BY

的分组规则,然后再将结果联合在一起。它的效果等同于先分别对这些组维度进行

GROUP BY

分组后,再通过

UNION

将结果联合起来

例如,

GROUPING SET

查询和等效的

GROUP BY

查询如下:

-- 示例1:SELECT a, b,SUM(c)FROM tab1 GROUPBY a, b GROUPING SETS ((a,b))-- 等效于SELECT a, b,SUM(c)FROM tab1 GROUPBY a, b

-- 示例2:SELECT a, b,SUM( c )FROM tab1 GROUPBY a, b GROUPING SETS ((a,b), a)-- 等效于SELECT a, b,SUM( c )FROM tab1 GROUPBY a, b
UNIONSELECT a,null,SUM( c )FROM tab1 GROUPBY a

-- 示例3:SELECT a,b,SUM( c )FROM tab1 GROUPBY a, b GROUPING SETS (a,b)-- 等效于SELECT a,null,SUM( c )FROM tab1 GROUPBY a
UNIONSELECTnull, b,SUM( c )FROM tab1 GROUPBY b

-- 示例4:SELECT a, b,SUM( c )FROM tab1 GROUPBY a, b GROUPING SETS ((a, b), a, b,())-- 等效于SELECT a
标签: hive 数据仓库 spark

本文转载自: https://blog.csdn.net/weixin_55629186/article/details/134856036
版权归原作者 对许 所有, 如有侵权,请联系我们删除。

“Hive增强的聚合、多维数据集、分组和汇总”的评论:

还没有评论