Hive【Hive(五)函数-高级聚合函数、炸裂函数】

高级聚合函数

多进一出(多行输入,一个输出)

普通聚合函数:count、sum ...

1)collect_list():收集并形成 list 集合,结果不去重

select sex,collect_list(job)
from employee
group by sex;
--女	["行政","研发","行政","前台"]
--男	["销售","研发","销售","前台"]

2)collect_set():收集并形成 set 集合,结果去重

select sex,collect_set(job)
from employee
group by sex;
--女	["行政","研发","前台"]
--男	["销售","研发","前台"]

案例

1)每个月的入职人数以及姓名
select month(replace(hire_date,'/','-')) as month,count(*) cnt,collect_list(name) as name_list
from employee
group by month(replace(hire_date,'/','-'));

运行结果: 

month  cnt  name_list
4	    2	["宋青书","周芷若"]
6	    1	["黄蓉"]
7	    1	["郭靖"]
8	    2	["张无忌","杨过"]
9	    2	["赵敏","小龙女"]

炸裂函数(UDTF)

接受一行数据,输出一行或多行数据。

TF(Table-Genrating Functions),表生成函数,也就是说这个函数的结果是一张表。

1、常用 UDTF - explode(array<T> a)

explode(array<T> a)接受一个数组类型的参数,它会把这一个数组炸裂成一个列(多行)。

语法
select explode(array("a","b","c"))as item;
-- item
-- a
-- b
-- c

2、 常用 UDTF - explode(Map<K,V> m)

返回多行2列(key,value)。

语法

注意:不加别名时,它默认的字段也是 key 和 value,我们自定义多个字段名时需要加括号。

select explode(map('hadoop','1','spark',2)) as (key,value);
-- key  value
-- hadoop 1
-- spark 2

 3、常用 UDTF - posexplode(array<T> a)

接受一个数组 array ,pos 的意思是 position ,也就是数组的下标。它返回多行两列,一列为 pos(索引) ,一列是 val(值)。

select posexplode(array('a','b','c'));
-- pos val
-- 0    a
-- 1    b
-- 2    c

4、常用 UDTF - inline(array<struct<f1:T1,...,fn:Tn>> a)

它接受一个 结构体数组 ,返回多行多列,列数=结构体的属性数量。

注意:每个结构体的属性数量必须一致。

select inline(array(named_struct("id",1,"name","zs","age",15),named_struct("id",2,"name","ls","age",17),named_struct("id",3,"name","ww","age",23))) as (id,name,age);

运行结果: 

Lateral View(常用)

Lateral View 通常与UDTF 配合使用。它可以将UDTF应用到源表的每行数据,UDTF会将每行数据转换为一行或多行,Lateral View会将源表中每行的输出结果与该行连接起来,形成一个虚拟表。

数据准备
create table movie_info(movie string,     --电影名称category string   --电影分类
)
row format delimited fields terminated by "\t";insert overwrite table movie_info
values ("《疑犯追踪》", "悬疑,动作,科幻,剧情"),("《Lie to me》", "悬疑,警匪,动作,心理,剧情"),("《战狼2》", "战争,动作,灾难");
函数演示
selectmovie,category_name
from
movie_info
lateral view
explode(split(category,",")) movie_info_tmp as category_name;

运行结果:

select cate,count(*)
from (select movie,catefrom (select movie,split(category,',') catesfrom movie_info)t1 lateral view explode(cates) tmp as cate
)t2
group by cate;

运行结果:

窗口函数

明天写

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

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

相关文章

JAVA学习(3)-全网最详细~

回顾 昨天学了 Java 中的数据类型-整型 int - integer,以及什么是标识符identifier和它的命名规则,什么是保留字(reserved word key word),最后还谈到了Java变量包括局部变量和成员变量(在类内部,方法外部的变量),变量必须要初始化,否则会报错.如果有遗忘或者是感兴趣的小伙伴…

Python PEP8 代码规范常见问题及解决方案

Win11查看安装的Python路径及安装的库 Python3(基础|高级)语法实战(|多线程|多进程|线程池|进程池技术)|多线程安全问题解决方案 Python PEP8 代码规范常见问题及解决方案 Python3操作MySQL8.XX创建表|CRUD基本操作 Python3操作SQLite3创建表主键自增长|CRUD基本操作 anac…

ESLint自动修复代码规范错误

基于 vscode 插件 ESLint 高亮错误&#xff0c;并通过配置 自动 帮助我们修复错误 在设置中 settings.json添加这段代码就自动修复错误 // 当保存的时候&#xff0c;eslint自动帮我们修复错误 "editor.codeActionsOnSave": { "source.fixAll": true }, /…

Ubuntu安装samba服务器

为了window系统下能够像访问本地目录一样访问ubuntu系统下的目录&#xff0c;这里我通过安装samba服务器&#xff0c;将ubuntu系统的文件目录通过网络挂载的方式共享出来&#xff0c;以便在window下就能够对ubuntu系统的文件进行读写等访问操作&#xff0c;这里记录一下samba服…

嵌入式技术面试基本规则

潜规则1&#xff1a;面试的本质不是考试&#xff0c;而是告诉面试官你会做什么 经验不够的小伙伴特别容易犯的一个错误&#xff0c;不清楚面试官到底想问什么&#xff0c;其实整个面试中面试官并没有想难倒你的意思&#xff0c;只是想通过提问的方式来知道你会什么。 比如stm…

thinkphp5实现ajax图片上传,压缩保存到服务器

<div class"warp"><input type"file" id"file" accept"image/*" onchange"upimg(this)" /></div> <img src"" /> <script>//上传图片方法function upimg(obj){var fileData obj.…

HTTP的请求方法,空行,body,介绍请求报头的内部以及粘包问题

目录 一、GET与POST简介 二、空行和body 三、初识请求报头以及粘包问题 四、认识请求报头剩余部分 一、GET与POST简介 GET https://www.sogou.com/HTTP/1.1 请求报文中的方法&#xff0c;是最常规的方法&#xff08;获取资源&#xff09; POST&#xff1a;传输实体主体的方法…

插入排序:简单而有效的排序方法

在计算机科学中&#xff0c;排序算法是一个重要且常见的主题&#xff0c;它们用于对数据进行有序排列。插入排序&#xff08;Insertion Sort&#xff09;是其中一个简单但有效的排序算法。本文将详细解释插入排序的原理和步骤&#xff0c;并提供Java语言的实现示例。 插入排序的…

systrace/perfetto抓取方式分享

背景 近来有一些同学反馈性能分析&#xff0c;现在大部分都是其实已经开始使用perfetto了&#xff0c;连sdk上都已经找不到哦systrace相关工具&#xff0c;让马哥可以分享一些这个相关内容&#xff0c;其实以前企业里面那时候大部分都是使用老版本systrace的&#xff0c;相比新…

sheng的学习笔记-【中文】【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第二周测验

课程1_第2周_测验题 目录&#xff1a;目录 第一题 1.神经元计算什么&#xff1f; A. 【  】神经元计算激活函数后&#xff0c;再计算线性函数&#xff08;zWxb&#xff09; B. 【  】神经元计算一个线性函数&#xff08;zWxb&#xff09;&#xff0c;然后接一个激活函数…

【MySQL】MySql常见面试题总结

目录 一、什么是sql注入 二、sql语句的执行流程 三、内连接和外连接的区别 四、Union和Union All 有什么区别 五、MySql如何取差集 六、DELETE和TRUNCATE有什么区别 七、count&#xff08;*&#xff09;和count&#xff08;1&#xff09;的区别 八、MyISAM和InnoDB的区…

【C语言进阶(11)】动态内存管理

文章目录 Ⅰ 存在动态内存分配的原因Ⅱ 动态内存函数1. malloc2. calloc3. realloc4. free (重要) Ⅲ 常见动态内存错误1. 对 NULL 指针的解引用操作2. 对动态开辟空间的越界访问3. 对非动态开辟内存使用 free 释放4. 使用 free 释放一块动态开辟内存的一部分5. 对同一块动态内…

《深度不确定条件下的决策:从理论到实践》PDF

制定未来计划时需要预测变化&#xff0c;尤其是制定长期计划或针对罕见事件的计划时。当这些变化存在高度不确定性的时候&#xff0c;这种预期就变得越来越困难。 今天给大家介绍的这本《深度不确定条件下的决策&#xff1a;从理论到实践》正是解决以上问题的良方。完整书籍文…

深入理解JVM虚拟机第十一篇:详细介绍JVM中运行时数据区

文章目录 前言 一:运行时数据区详解 1:线程私有和线程公有区域 2:阿里的运行时数据区图

数据结构与算法-顺序表

数据结构与算法 &#x1f388;1.线性表&#x1f50e;1.1基本操作&#x1f50e;1.2线性表的存储结构 &#x1f388;2.线性表的顺序表示和实现&#x1f50e;2.1线性表的顺序存储表示&#x1f52d;2.1.1静态顺序表&#x1f52d;2.1.2动态顺序表 &#x1f50e;2.2顺序表基本操作的实…

设计有效的异常测试用例:关注这些方向,保障软件稳定性

在软件测试过程中&#xff0c;我们通常会关注基本功能测试、性能测试、压力测试等常规场景。然而&#xff0c;随着软件使用时间的增长&#xff0c;一些突发情况或者异常场景也可能会出现。为了保障软件的稳定性和质量&#xff0c;我们需要在测试中加入异常测试的环节。本文将围…

PL/SQL动态SQL

目录 1. 动态 sql 2. 带参数的动态 sql -- 不使用 USING 传参 1. 动态 sql -- 在 PL/SQL 程序开发中,可以使用 DML 语句,但是很多语句(如 DDL),不能直接在 PL/SQL中执行,这些语句可以使用动态 sql 来实现. 语法格式: EXECUTE IMMEDIATE --动态语句的字符串 [into 变量…

安卓:解决AndroidStudio导出Unity的Apk(APP)出现2个显示图标

用AndroidStudio打开该项目 实现只保留1个app图标 AndroidManifest.xml的改法如下&#xff1a; <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android" package"com.fru…

【开发篇】十四、SpringBoot整合Quartz实现定时任务

文章目录 1、关于定时任务2、Java原生实现3、相关名词4、SpringBoot整合Quartz5、Quartz的通用配置6、关于QuartzJobBean7、关于调度器Scheduler的绑定8、Quartz持久化 1、关于定时任务 定时任务在实际开发中使用场景很多&#xff0c;比如&#xff1a; 年度报告各种统计报告某…

使用 gst-plugins-bad 里面的 gst-element-maker 工具创建gstreamer 插件

系列文章目录 创建 gstreamer 插件的几种方式 使用 gst-template 创建自己的 gstreamer 插件 使用 gst-plugins-bad 里面的 gst-element-maker 工具创建gstreamer 插件 使用 gst-element-maker 创建一个完全透传的 videofilter 插件 文章目录 系列文章目录前言一、获取gst-plu…