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

Hive高阶函数:explode函数、Lateral View侧视图、聚合函数、增强聚合

Hive高阶函数

文章目录

  • Hive高阶函数
    • explode函数
    • Lateral View侧视图
      • 原理
      • 语法
    • 聚合函数
    • 增强聚合
      • grouping sets
      • CUBE
      • ROLL UP

explode函数

  • explode接收map、array类型的数据作为输入,然后把输入数据中的每个元素拆开变成一行数据,一个元素一行。
  • explode执行效果正好满足于输入一行输出多行。
  • 一般情况下可以单独使用,也可以根据业务需要结合lateral view侧视图一起使用。
  • SELECT时不能和其他字段一起返回,要借助lateral view侧视图。
  • 例:
  1. step1:建表
CREATE TABLE the_nba_championship(team_name STRING,champion_year ARRAY<STRING>
)ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','COLLECTION ITEMS TERMINATED BY '|';
  1. step2:加载数据文件到表中
LOAD DATA LOCAL INPATH '/root/hivedata/The_NBA_Championship.txt' INTO TABLE the_nba_championship;
  1. step3:使用explode函数对champion_year进行拆分:
SELECT a.team_name,b.year
FROM the_nba_championship a LATERAL VIEW EXPLODE(champion_year) b AS year
ORDER BY b.year DESC;

Lateral View侧视图

  • 是一种特殊的语法,主要搭配UDTF类型函数一起使用,用于解决UDTF函数的一些查询限制问题。
  • 一般只要使用UDTF,就会固定搭配lateral view使用

原理

  • 将UDTF的结果构建成一个类似于视图的表,然后将原表中的每一行和UDTF函数输出的每一行进行连接,生成一张新的虚拟表。这样就避免了UDTF的使用限制问题。
  • 使用lateral view时也可以对UDTF产生的记录设置字段名称,产生的字段可以用于group by、order by、limit等语句中,不需要再单独嵌套一层子查询。

语法

SELECT ... FROM tablelA LATERAL VIEW UDTF(XXX) 别名 AS col1,col2,col3...;
  • 例1:
SELECT a.team_name,b.year
FROM the_nba_championship a LATERAL VIEW EXPLODE(champion_year) b AS year;
  • 例2:统计每个球队获取总管据的次数,并根据倒序排序
SELECT a.team_name ,COUNT(*) AS nums
FROM the_nba_championship a LATERAL VIEW EXPLODE(champion_year) b AS year
GROUP BY a.team_name
ORDER BY nums DESC;

聚合函数

  • 功能:对一组值执行计算并返回单一的值
  • 聚合函数是典型的输入多行输出一行,使用Hive的分类标准,属于UDAF类型函数。
  • 通常搭配GROUP BY语法一起使用,分组后进行聚合操作。
  • 若未指定GROUP BY子句,默认情况下,它会汇总所有行数据。
  • 用法同MySQL
  • 可以配合条件转换函数使用,如:
SELECTSUM(CASE WHEN sex = '男' THEN 1 ELSE 0 END)
FROM studen;
  • 不支持嵌套聚合函数
  • 计算时会忽略NULL值所在行(不会默认null为0,整行直接视为不存在)
  • 可以结合struct构造数据,找出最大值对应的其他字段值,例:
SELECT sex,
max(struct(age,name)).col1 AS age,
max(struct(age,name)).col2 AS name,
FROM student
GROUP by sex;

增强聚合

  • 包括grouping sets、cube、rollup这几个函数;主要适用于OLAP多维数据分析模式中。

grouping sets

  • grouping sets是一种将多个group by逻辑写在一个sql语句中的便利写法。等价于将不同维度的group by结果合并(union all)。grouping id表示结果属于哪个分组集合。
  • 例:
SELECT month,day,COUNT(DISTINCT cookieid) AS nums,GROUPING__,ID
FROM cookie_info
GROUP BY month,day
GROUPING SETS(month,day)
ORDER BY GROUPING__ID;

等价于:

SELECT month,NULL,COUNT(DISTINCT cookieid)AS nums,1 AS GROUPING__ID
FROM cookie_info GROUP BY month
UNION ALL
SELECT NULL AS month,day,COUNT(DISTINCT cookieid)AS nums,2 AS GROUPING__ID
FROM cookie_info GROUP BY day;

CUBE

  • 表示根据GROUP BY维度的所有组合进行聚合
    对于cube来说,如果有n个维度,则所有组合的总个数是:2^n
  • 若roll up有a,b,c三个维度,则所有组合情况是:(a,b,c),(a,b),(b,c),(a,c),(a),(b),©,()
  • 例:
SELECT month,day,COUNT(DISTINCT cookieid)AS nums,GROUPING__ID
FROM cookie_info
GROUP BY month,day
WITH CUBE
ORDER BY GROUPING__ID;

等价于:

SELECT NULL,NULL,COUNT(DISTINCT cookieid) AS nums,0 AS GROUPING__ID FROM cookie_info
UNION ALL
SELECT month,NULL,COUNT(DISTINCT cookieid) AS nums,1 AS GROUPING__ID FROM cookie_info GROUP BY month
UNION ALL
SELECT NULL,day,COUNT(DISTINCT cookieid) AS nums,2 AS GROUPING__ID FROM cookie_info GROUP BY day
UNION ALL
SELECT month,day,COUNT(DISTINCT cookieid) AS GROUPING_ID FROM cookie_info GROUP BY month,day;

ROLL UP

  • roll up是cube的子集,以最左侧的维度为主,从该维度进行层级聚合。
  • 若roll up有a,b,c三个维度,则所有组合情况是:(a,b,c),(a,b),(a),()
  • 例:
#以month维度进行层级聚合:
SELECT month,day,COUNT(DISTINCT cookieid) AS nums,GROUPING__ID
FROM cookie_info
GROUP BY month,day
WITH ROLLUP
ORDER BY GROUPING__ID;

相关文章:

Hive高阶函数:explode函数、Lateral View侧视图、聚合函数、增强聚合

Hive高阶函数 文章目录Hive高阶函数explode函数Lateral View侧视图原理语法聚合函数增强聚合grouping setsCUBEROLL UPexplode函数 explode接收map、array类型的数据作为输入&#xff0c;然后把输入数据中的每个元素拆开变成一行数据&#xff0c;一个元素一行。explode执行效果…...

信息系统服务管理

一、信息系统服务业及发展二、信息系统工程监理的概念及发展三、信息系统运行维护的概念和发展 IT服务管理&#xff08;ITSM) 四、信息技术服务管理的标准和框架 IT服务标准体系&#xff08;ITSS&#xff09; 一、信息系统服务业及发展 总结&#xff1a;前景很好 二、信息系…...

Windows10 安装ElasticStack8.6.1

一、安装ElasticSearch8.6.1 1.官网下载ElasticSearch8.6.1压缩包后解压 2.安装为服务 elasticsearch-service.bat install 3.运行 elasticsearch-service.bat start 4.通过浏览器访问 http://localhost:9200/ 提示需要登录&#xff0c;但不知密码是啥。 5.重置密码 ela…...

gRPC 非官方教程

一、 简介 gRPC的定义&#xff1a; 一个高性能、通用的开源RPC框架主要面向移动应用开发&#xff1a; gRPC提供了一种简单的方法来精确地定义服务和为iOS、Android和后台支持服务自动生成可靠性很强的客户端功能库。基于HTTP/2协议标准而设计&#xff0c;基于ProtoBuf(Protoc…...

6.2【人工智能与深度学习】RNN、GRU、远程服务管理、注意力、Seq2 搜索引擎和内存网络

【人工智能与深度学习】RNN、GRU、远程服务管理、注意力、Seq2 搜索引擎和内存网络底层原理介绍 深度学习架构循环神经网络(RNN)循环网络:摊开循环的网络的循环循环神经网络的技巧乘法模组注意模组门控循环单元(GRU)长期短期记忆(Long Short-Term Memory,简称LSTM)序列到序列…...

软件工程复习

软件工程简介 软件&#xff1a; -在执行时提供所需的功能和性能的指令&#xff1b; -使程序能够充分操作信息的数据结构&#xff1b; -描述这些程序的操作和使用情况的文档。 软件定义&#xff1a;计算机程序和相关文档。 软件特点&#xff1a;软件没有质量&#xff1b;它并不…...

将Nginx 核心知识点扒了个底朝天(二)

Nginx 是如何实现高并发的&#xff1f; 如果一个 server 采用一个进程(或者线程)负责一个request的方式&#xff0c;那么进程数就是并发数。那么显而易见的&#xff0c;就是会有很多进程在等待中。等什么&#xff1f;最多的应该是等待网络传输。 而 Nginx 的异步非阻塞工作方…...

【PowerQuery】PowerBI 的PowerQuery支持的数据集成

PowerBI中的各个Power组件已经被深度集成到PowerBI中,不再作为像Excel一样的独立组件而存在。在PowerBI的界面中为了快速导入这些常用的数据,也有相应的快速导入界面。PowerBI的快速导入界面位于主页面中,下图就是PowerBI的快速导入界面。 在PowerBI中的数据导入界面相比Exc…...

scipy spatial transform Rotation库的源代码

前几日研究scipy的旋转&#xff0c;不知道具体里面怎么实现的&#xff0c;因此搜索一番。 发现Rotation在scipy的表达是用四元数的 https://github.com/jgagneastro/coffeegrindsize/edit/master/App/dist/coffeegrindsize.app/Contents/Resources/lib/python3.7/scipy/spatia…...

JAVA文件操作

JAVA文件操作 文章目录JAVA文件操作1.属性2.构造方法3.方法3.1创建文件3.2 文件删除3.3创建目录3.4文件名3.5 文件重命名3.6查看文件的可读性​ Java中通过 java.io.file类来对文件(目录)进行抽象的描述。注意&#xff0c; 有File对象时&#xff0c;不代表真实存在该文件。1.属…...

字符串匹配 - 模式预处理:BM 算法 (Boyer-Moore)

各种文本编辑器的"查找"功能&#xff08;CtrlF&#xff09;&#xff0c;大多采用Boyer-Moore算法&#xff0c;效率非常高。算法简介在 1977 年&#xff0c;Robert S. Boyer (Stanford Research Institute) 和 J Strother Moore (Xerox Palo Alto Research Center) 共…...

RV1126笔记三十:freetype显示矢量字体

若该文为原创文章,转载请注明原文出处。 在前面介绍了使用取模软件,可以自定义OSD,这种做法相对不灵活,也无法变更,适用大部分场景。 如果使用opencv需要移植opencv,芯片资源相对要相比好,而且移植比freetype复杂。 这里记录下如何使用freetype显示矢量字体,使用fre…...

polkit pkexec 本地提权漏洞修复方案

polkit pkexec 本地提权漏洞 漏洞细节&#xff0c;polkit pkexec 中对命令行参数处理有误&#xff0c;导致参数注入&#xff0c;能够导致本地提权。 解决建议 1、无法升级软件修复包的&#xff0c;可使用以下命令删除pkexec的SUID-bit权限来规避漏洞风险&#xff1a; chmod 0…...

es-06聚合查询

聚合查询 概念 聚合&#xff08;aggs&#xff09;不同于普通查询&#xff0c;是目前学到的第二种大的查询分类&#xff0c;第一种即“query”&#xff0c;因此在代码中的第一层嵌套由“query”变为了“aggs”。用于进行聚合的字段必须是exact value&#xff0c;分词字段不可进行…...

面试知识点准备与总结——(并发篇)

目录线程有哪些状态线程池的核心参数sleep和wait的区别lock 与 synchronized 的异同volatile能否保证线程安全悲观锁和乐观锁的区别Hashtable 与 ConcurrentHashMap 的区别ConcurrentHashMap1.7和1.8的区别ThreadLocal的理解ThreadLocalMap中的key为何要设置为弱引用线程有哪些…...

Django框架之模型视图-URLconf

URLconf 浏览者通过在浏览器的地址栏中输入网址请求网站对于Django开发的网站&#xff0c;由哪一个视图进行处理请求&#xff0c;是由url匹配找到的 配置URLconf 1.settings.py中 指定url配置 ROOT_URLCONF 项目.urls2.项目中urls.py 匹配成功后&#xff0c;包含到应用的urls…...

操作系统闲谈06——进程管理

操作系统闲谈06——进程管理 一、进程调度 01 时间片轮转 给每一个进程分配一个时间片&#xff0c;然后时间片用完了&#xff0c;把cpu分配给另一个进程 时间片通常设置为 20ms ~ 50ms 02 先来先服务 就是维护了一个就绪队列&#xff0c;每次选择最先进入队列的进程&#…...

DaVinci 偏好设置:用户 - UI 设置

偏好设置 - 用户/ UI 设置Preferences - User/ UI Settings工作区选项Workspace Options语言Language指定 DaVinci Resolve 软件界面所使用的语言。目前支持英语、简体中文、日语、西班牙语、葡萄牙语、法语、俄语、泰语和越南语等等。启动时重新加载上一个工作项目Reload last…...

Nacos超简单-管理配置文件

优点理论什么的就不说了&#xff0c;按照流程开始配配置吧。登录Centos&#xff0c;启动Naocs&#xff0c;使用sh /data/soft/restart.sh将自动启动Nacos。访问&#xff1a;http://192.168.101.65:8848/nacos/账号密码&#xff1a;nacos/nacos分为两部分&#xff0c;第一部分准…...

基于微信小程序的中国各地美食推荐平台小程序

文末联系获取源码 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.…...

如何优雅的导出函数

在开发过程中&#xff0c;经常会引用外部函数。方法主要有两种&#xff1a; 方法一&#xff1a;包含头文件并制定lib位置 优点&#xff1a;使用简单缺点&#xff1a;lib和vs版本有关&#xff0c;不同的版本和编译模式可能导致编译失败 方法二&#xff1a;GetProcAddress 优…...

c++多重继承

1.概论多重继承是否有必要吗&#xff1f;这个问题显然是一个哲学问题&#xff0c;正确的解答方式是根据情况来看&#xff0c;有时候需要&#xff0c;有时候不需要&#xff0c;这显然是一句废话&#xff0c;有点像上马克思主义哲学或者中庸思。但是这个问题和那些思想一样&#…...

15_FreeRtos计数信号量优先级翻转互斥信号量

目录 计数型信号量 计数型信号量相关API函数 计数型信号量实验源码 优先级翻转简介 优先级翻转实验源码 互斥信号量 互斥信号量相关API函数 互斥信号量实验源码 计数型信号量 计数型信号量相当于队列长度大于1的队列&#xff0c;因此计数型信号量能够容纳多个资源,这在…...

二叉树(一)

二叉树&#xff08;一&#xff09;1.树的概念2.树的相关概念3.树的表示4.树在实际中的运用5.二叉树概念及结构6.特殊的二叉树7.二叉树的性质&#x1f31f;&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f;&#x1f31f; &#x1f680;&#x1f680;系列专栏…...

【SCL】1200案例:天塔之光数码管显示液体混合水塔水位

使用scl编写天塔之光&数码管显示&液体混合&水塔水位 文章目录 目录 文章目录 前言 一、案例1&#xff1a;天塔之光 1.控制要求 2.编写程序 3.效果 二、案例2&#xff1a;液体混合 1.控制要求 2.编写程序 三、案例3&#xff1a;数码管显示 1.控制要求 2.编写程序 3…...

5.1配置IBGP和EBGP

5.2.1实验1&#xff1a;配置IBGP和EBGP 实验目的 熟悉IBGP和EBGP的应用场景掌握IBGP和EBGP的配置方法 实验拓扑 实验拓扑如图5-1所示&#xff1a; 图5-1&#xff1a;配置IBGP和EBGP 实验步骤 IP地址的配置 R1的配置 <Huawei>system-view Enter system view, return …...

c++中超级详细的一些知识,新手快来

目录 2.文章内容简介 3.理解虚函数表 3.1.多态与虚表 3.2.使用指针访问虚表 4.对象模型概述 4.1.简单对象模型 4.2.表格驱动模型 4.3.非继承下的C对象模型 5.继承下的C对象模型 5.1.单继承 5.2.多继承 5.2.1一般的多重继承&#xff08;非菱形继承&#xff09; 5.2…...

[答疑]经营困难时期谈建模和伪创新-长点心和长点良心

leonll 2022-11-26 9:53 我们今年真是太难了……&#xff08;此处删除若干字&#xff09;……去年底就想着邀请您来给我们讲课&#xff0c;现在也没有实行。我想再和我们老大提&#xff0c;您觉得怎么说个关键理由&#xff0c;这样的形势合适引进UML开发流程&#xff1f; UML…...

计算机基础知识

计算机网络的拓扑结构 一、OSI 7层网络模型是指什么&#xff1f; 7层分别是什么&#xff1f;每层的作用是什么&#xff1f; OSI7层模型是 国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系。 每层功能:&#xff08;自底向上&#xff09; 物理层:建立、…...

Java爬虫—WebMagic

一&#xff0c;WebMagic介绍WebMagic企业开发&#xff0c;比HttpClient和JSoup更方便一&#xff09;&#xff0c;WebMagic架构介绍WebMagic有DownLoad&#xff0c;PageProcessor&#xff0c;Schedule&#xff0c;Pipeline四大组件&#xff0c;并有Spider将他们组织起来&#xf…...

西部网站建设/天堂网长尾关键词挖掘网站

1.进程和线程 进程&#xff1a; 计算机中程序关于某数据集合的一次运行活动&#xff0c;是计算机系统进行资源分配和调度的基本单位&#xff0c;是操作系统结构的基础。 线程&#xff1a; 线程是进程的实例&#xff0c;是CPU进行资源分配和调度的最小单位&#xff0c;线程是轻量…...

爱 做 网站吗/全球网站排名前100

难以置信我居然今生有幸独立调出了这样一道神题&#xff01;orzorzCLJ! 题目传送门 题解&#xff1a; 其实这道题思路不算复杂&#xff0c;但是代码难度特别比较高。 由于点是一个一个加进来的&#xff0c;我们可不可以一步一步地构建一棵动态分治树呢&#xff1f;我们发现…...

张家港网站制作公司/上海aso优化公司

如果采用与十进制减法相同的方法&#xff0c;那么从一个较大的二进制数中减去一个较小的无符号二进制数就很容易了。示例如下&#xff1a;01101 (十进制数 13)– 00111 (十进制数 7)———-位 0 上的减法非常简单&#xff1a;01101– 00111———-0下一个位置上执行…...

网易邮箱网页版/上海外包seo

这里只写cacti监控lvs的部分&#xff0c;前提是cacti安装完成。服务端&#xff08;下载2个附件&#xff09;1.服务端添加模板cacti_data_query_snmp_lvs.xml2.将 snmp-lvs.xml 拷贝到source 目录下客户端(lvs机器-这里针对5和4的32位系统&#xff0c;el5_64位不适用)A 安装 net…...

邯郸邯山区网站建设/链接制作软件

我们可以在windows上建立ASM实例。oracle给我们提供了一个很贴心的工具&#xff0c;来实现在windows上安装asm&#xff0c;这个工具就是asmtool。该工具可以在安装介质的asmtool目录中找到&#xff0c;也可以在安装数据库软件后&#xff0c;在$ORACLE_HOME/bin下找到。下面&…...

怎么进入网站后台图片/重庆百度seo整站优化

数据库领域公认的标准结构是三级模式结构&#xff0c;它包括外模式、模式和内模式&#xff0c;有效地组织、管理数据&#xff0c;提高了数据库的逻辑独立性和物理独立性。用户级对应外模式&#xff0c;概念级对应模式&#xff0c;物理级对应内模式&#xff0c;使不同级别的用户…...