Hive多维分析函数——With cube、Grouping sets、With rollup

有些指标涉及【多维度】的聚合,大的汇总维度,小的明细维度,需要精细化的下钻。

  • grouping sets: 多维度组合,组合维度自定义;
  • with cube: 多维度组合,程序自由组合,组合为各个维度的笛卡尔积;
  • with rollup:是 with cube的子集,以左侧维度为主,即不允许左侧为NULL,右侧为非NULL的情况出现

一、grouping sets

 0 数据准备

with test1 as(select '2021-08' as month_date,'2021-08-11' as day_date,10 as pvunion allselect '2021-08' as month_date,'2021-08-10' as day_date,15 as pvunion allselect '2021-08' as month_date,'2021-08-08' as day_date,35 as pvunion allselect '2021-07' as month_date,'2021-07-08' as day_date,35 as pvunion allselect '2021-07' as month_date,'2021-07-06' as day_date,25 as pvunion allselect '2021-07' as month_date,'2021-07-03' as day_date,15 as pv)select month_date,day_date,sum(pv) as pvfrom test1group by month_date,day_dategrouping sets((),(month_date),(month_date,day_date),(day_date))order by month_date,day_date;

 1 结果分析

二、with cube

 0 数据准备

with test1 as
(select '2021-08' as month_date,'2021-08-11' as day_date,10 as pvunion allselect '2021-08' as month_date,'2021-08-10' as day_date,15 as pvunion allselect '2021-08' as month_date,'2021-08-08' as day_date,35 as pvunion allselect '2021-07' as month_date,'2021-07-08' as day_date,35 as pvunion allselect '2021-07' as month_date,'2021-07-06' as day_date,25 as pvunion allselect '2021-07' as month_date,'2021-07-03' as day_date,15 as pv)select month_date,day_date,sum(pv) as pvfrom test1group by month_date,day_datewith cubeorder by month_date,day_date;

 1 结果分析

2 总结

  • 从with cube和grouping sets的案例可以看出,两个结果是一样的;
  • with cube的维度组合(各个维度的笛卡尔积)就是groupingsets里面手动添加的维度,即为month_date,day_date两个维度的笛卡尔积。维度组合即为:()、 (month_date)、 (month_date,day_date)、 (day_date)

三、 with rollup

 0 数据准备

with test1 as
(select '2021-08' as month_date,'2021-08-11' as day_date,10 as pvunion allselect '2021-08' as month_date,'2021-08-10' as day_date,15 as pvunion allselect '2021-08' as month_date,'2021-08-08' as day_date,35 as pvunion allselect '2021-07' as month_date,'2021-07-08' as day_date,35 as pvunion allselect '2021-07' as month_date,'2021-07-06' as day_date,25 as pvunion allselect '2021-07' as month_date,'2021-07-03' as day_date,15 as pv)select month_date,day_date,sum(pv) as pv
from test1
group by month_date,day_date
with rollup
order by month_date,day_date;

 1 结果分析

 2 总结

   从结果上可以看出,with rollup 和with cube的区别是,少了day_date这个单独维度的聚合,因为with rollup是以左侧维度为主,当左侧month_date维度为NULL时,右侧day_date维度必须为NULL。

参考文章 :

https://zhuanlan.zhihu.com/p/631268351

https://blog.51cto.com/u_14555/6696007

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/877025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据:数据标准化及质量管控方案

本方案是一套全面的解决方案,旨在为企业构建科学、规范的数据管理体系,确保数据的准确性、一致性、完整性、合理性、及时性和有效性,从而支撑业务数据的高效应用与正确决策。以下是对该方案的详细介绍: 一、方案概述 本数据标准…

如何限制 docker 使用cpu

在 Docker 中可以使用多种方法来限制容器对 CPU 的使用,以下是一些常见的方式: 使用 --cpus 参数(Docker 1.13 及更高版本):通过该参数指定容器可以使用的最大 CPU 核心数。例如,如果主机有4个核心&#xf…

迎峰度夏,应急备电:应急电源和燃油发电机哪个好?应急电源选购

在电网迎峰度夏的严峻挑战面前,铂陆帝应急电源以其卓越的性能和可靠性,成为了不可或缺的电力保障伙伴。与燃油发电机相比,铂陆帝应急电源在多个方面均展现出显著的优势。 更高效稳定,性能卓越 铂陆帝应急电源具备出色的性能和稳定…

GPIO子系统

1. GPIO子系统视频概述 1.1 GPIO子系统的作用 芯片内部有很多引脚,这些引脚可以接到GPIO模块,也可以接到I2C等模块。 通过Pinctrl子系统来选择引脚的功能(mux function)、配置引脚: 当一个引脚被复用为GPIO功能时,我们可以去设…

PySide(PyQt)的QPropertyAnimation(属性动画)

学不完,根本学不完:(,感觉逐渐陷入了学习深渊。。。 QPropertyAnimation 是 PySide(PyQt) 中一个用于在时间轴上平滑地改变对象属性的类。它常用于制作动画效果,比如移动、缩放或改变透明度等。 基本概念 QPropertyAnimation 是 Qt …

GPT5发布时间预测,即将到来的GPT5

GPT-5:未来的展望与功能预测 随着人工智能技术的飞速发展,生成式预训练模型(GPT)已经成为自然语言处理领域的核心技术。从 GPT-1 到目前的 GPT-4,每一代模型都带来了显著的进步和变革。那么,GPT-5 的到来将…

【环境搭建问题】linux服务器安装conda并创建虚拟环境

1.检查有没有conda 首先看root文件夹下有没有anaconda或者conda 没有的话就要先下载安装conda: https://repo.anaconda.com/archive/index.html 在这个链接下找自己需要的。服务器一般为linux,所以我这里选择的是: 2.安装conda 下载安装…

自动控制:PID控制器参数对控制性能的影响

自动控制:PID控制器参数对控制性能的影响 PID控制器是工业控制领域中最常用的控制算法之一。PID控制器通过调节比例、积分(I)、微分(D)三个参数,使系统达到预期的控制效果。本文将详细讨论PID控制器的三个参数对控制性能的影响,并给出一些实…

Python脚本:使用PyPDF2给一个PDF添加上页数/总页数标签

一、实现代码 import PyPDF2 from PyPDF2 import PdfWriter from PyPDF2.generic import AnnotationBuilder# 指定输入和输出pdf pdf_path rC:\Users\ASUS\Desktop\temp\xxxx.pdf out_path rC:\Users\ASUS\Desktop\temp\xxxx2.pdf# 创建 PdfWriter 对象 writer PdfWriter()…

C++面向对象编程解析

文章目录 1. 概述 2. 作用解析 3. 概念解析 1. 类和对象 2. 封装(Encapsulation) 3. 继承(Inheritance) 4. 多态(Polymorphism) 1. 概述 C 是在 C 语言的基础上增加了面向对象编程(OOP&…

【管理咨询宝藏148】顶级咨询公司大型线下连锁门店客户生命周期规划方案

【管理咨询宝藏148】顶级咨询公司大型线下连锁门店客户生命周期规划方案 【格式】PDF版本 【关键词】零售数字化、客户生命周期、客户画像 【核心观点】 - 在多年的行业研究积累过程中,将每个行业中具有典型代表性的用户维度进行了总结。本项目选择用户服务的标杆企…

精通Scrapy:深度解析爬虫框架工作流程

精通Scrapy:深度解析爬虫框架工作流程 引言 在数据驱动的时代,网络爬虫成为了获取信息的重要手段。作为一名资深的Python程序员,我对Scrapy这一强大的爬虫框架有着深刻的认识。Scrapy以其异步处理能力和模块化设计,在数据采集领…

实现call()、apply()、bind()函数及各自使用场景

本文主要讲解实现call()、apply()、bind()函数及使用场景举例。在JavaScript中,call(), apply(), 和 bind() 是函数对象的方法,它们允许你以不同的方式调用函数,并可以设置函数体内 this 的值。this相关与这三个函数介绍:文章第二…

视频监控管理平台LntonAIServer智能视频监控平台在工业排污检测中的应用

随着工业化的不断发展,环境污染问题日益严重。为了保护生态环境,各国政府纷纷出台相关政策,对工业排污进行严格监管。然而,传统的排污检测方法往往耗时耗力,且难以实现实时监控。因此,如何提高工业排污检测…

【idf ESP32】SPI的使用

文章目录 前言通信流程图SPI总线初始化spi_bus_config_t 结构体声明及成员含义spi_bus_initialize 函数的作用、原型及参数和返回值的含义函数原型:参数含义:返回值: 示例: 添加SPI设备spi_bus_add_device 函数介绍函数原型&#…

Graph-RAG:知识图谱与大模型的融合

在数字化的浪潮中,知识的累积已非线性增长,以指数级的速度膨胀。我们站在一个信息过载的十字路口,迫切需要一种能力,能够穿透数据的迷雾,捕捉知识的精髓。本文将揭示 Graph-RAG 的神秘面纱,这是一种突破传统…

FBMM: Making Memory Management Extensible With Filesystems——论文泛读

ATC 2024 Paper 论文阅读笔记整理 问题 CXL这样的新内存技术实现了多种内存配置,如分层内存、远内存和内存处理。为了支持这些新的硬件配置,需要对操作系统进行大量修改。例如,Meta的TPP内核补丁对NUMA和页面回收策略进行了更改&#xff0c…

PMP证书含金量高吗?值得考吗?

值啊,我考过了,PMP 是项目管理岗位的敲门砖,很多企业都写明了持有PMP 证书的优先,而且学完这个知识体系,对我的能力提升确实有帮助,还是值得的。 一、为什么值得 这个证书就是基础知识,项目管…

LUA脚本改造redis分布式锁

在redis集群模式下,我们会启动多个tomcat实例,每个tomcat实例都有一个JVM,且不共享。而synchronize锁的作用范围仅仅是当前JVM,所以我们需要一个作用于集群下的锁,也就是分布式锁。(就是不能用JVM自带的锁了…