当前位置: 首页 > article >正文

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

Hive多维分析

    • 1、多维分析概述
    • 2、GROUPING SETS多维分组
    • 3、GROUPING__ID函数
    • 4、ROLLUP与CUBE语法糖
    • 5、多维分析常见问题与解决



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

进入正题,本文主要对照Hive介绍Hive、Spark、Presto查询引擎中的增强GROUP BY及相关语法,并通过多维场景案例分析详解三个引擎增强多维聚合语法之间的区别,以及使用中的一些常见问题

1、多维分析概述


在多维分析场景下,我们可能会用到高阶聚合函数,例如GROUPING SETSCUBEROLLUP等。Hive、Spark、Presto等引擎都提供类似的高阶聚合函数,以对不同维度组合下的数据进行聚合统计

Hive官方将这种分析称为GROUP BY子句增强的聚合、多维数据集、分组和汇总

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

增强聚合是指在SQL中使用分组聚合查询时,使用GROUPING SETSCUBEROLLUP等子句进行操作。常见的查询引擎基本都支持这种语法,例如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 GROUP BY a, b GROUPING SETS ( (a,b) )
-- 等效于
SELECT a, b, SUM(c) FROM tab1 GROUP BY a, b

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

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

-- 示例4:
SELECT a, b, SUM( c ) FROM tab1 GROUP BY a, b GROUPING SETS ( (a, b), a, b, ( ) )
-- 等效于
SELECT a

http://www.kler.cn/a/161648.html

相关文章:

  • 4-6-2.C# 数据容器 - ArrayList 扩展(ArrayList 注意事项、ArrayList 存储对象的特性、ArrayList 与数组的转换)
  • 【Visual Studio】使用VS调试(Debug)
  • 「Mac玩转仓颉内测版12」PTA刷题篇3 - L1-003 个位数统计
  • opencv常用api
  • 将Excel文件的两个表格经过验证后分别读取到Excel表和数据库
  • Go语言 实现将中文转化为拼音
  • 动手学深度学习——Anaconda、pytorch、paddle安装(cpu版本)
  • Python-封装配置文件
  • 学习-ES
  • 三层交换机配置DHCP服务
  • 在vue中深度选择器的使用
  • 什么是css初始化
  • 代客泊车手势召车功能设计规范
  • 【计算机网络学习之路】HTTP响应报文Cookie原理
  • 玩转Sass:掌握数据类型!
  • postgreSql逻辑复制常用语句汇总和说明
  • SQL Server权限管理与数据恢复
  • Spring Boot HTTP 400 错误的日志信息在哪里查看 ?
  • 互联网洗鞋上门预约小程序预约下单系统源码公众号源码H5
  • 创建vue项目:node.js下载安装、配置环境变量,下载安装cnpm,配置npm的目录、镜像,安装vue、搭建vue项目开发环境(保姆级教程一)
  • office办公技能|ppt插件使用
  • 要求CHATGPT高质量回答的艺术:提示工程技术的完整指南—第 22 章:情感分析提示
  • QT作业1
  • vscode eide arm-gcc 编译环境搭建调试
  • springboot集成cxf
  • 【开源】基于JAVA的个人健康管理系统