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

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;

运行结果:

窗口函数

明天写

相关文章:

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

高级聚合函数 多进一出&#xff08;多行输入&#xff0c;一个输出&#xff09; 普通聚合函数&#xff1a;count、sum ... 1&#xff09;collect_list&#xff08;&#xff09;&#xff1a;收集并形成 list 集合&#xff0c;结果不去重 select sex,collect_list(job) from e…...

zabbix(二)

文章目录 1. zabbix自定义监控项【配置】2. zabbix自定义监控项【传参】3. zabbix自定义触发器4. zabbix邮件告警4. zabbix企业微信告警 1. zabbix自定义监控项【配置】 目前有主机zabbix-server: 10.0.0.10 zabbix-slave: 10.0.0.11 zabbix监控的内容&#xff0c;想平滑转移到…...

容器安全检测工具KubeHound使用

前言 Kubernetes集群攻击路径AES工具 安装 下载kubehound git clone https://github.com/DataDog/KubeHound.git 安装docker compose插件 Docker compose插件安装_信安成长日记的博客-CSDN博客 启动kubehound后端服务 即要开大内存&#xff0c;不然db起不来&#xff0c…...

机器学习笔记 - 基于强化学习的贪吃蛇玩游戏

一、关于深度强化学习 如果不了解深度强化学习的一般流程的可以考虑看一下下面的链接。因为这里的示例因为在PyTorch 之上实现深度强化学习算法。 机器学习笔记 - Deep Q-Learning算法概览深度Q学习是一种强化学习算法,它使用深度神经网络来逼近Q函数,用于确定在给定状态下采…...

C++_pen_类

类的成员函数 构造函数析构函数普通成员函数 构造函数与析构函数 #include <stdio.h> class STU{ public:STU(){printf("STU\n");}STU(int id){printf("STU(int id)\n");}~STU(){printf("STU Bye!!!\n");} };int main(int argc, char c…...

MySQL 多表关联查询优化实践和原理解析

目录 一、前言二、表数据准备三、表关联查询原理和两种算法3.1、研究关联查询算法必备知识点3.2、嵌套循环连接 Nested-Loop Join(NLJ) 算法3.3、基于块的嵌套循环连接 Block Nested-Loop Join(BNL)算法3.4、被驱动表的关联字段没索引为什么要选择使用 BNL 算法而不使用 Nested…...

LeNet网络复现

文章目录 1. LeNet历史背景1.1 早期神经网络的挑战1.2 LeNet的诞生背景 2. LeNet详细结构2.1 总览2.2 卷积层与其特点2.3 子采样层&#xff08;池化层&#xff09;2.4 全连接层2.5 输出层及激活函数 3. LeNet实战复现3.1 模型搭建model.py3.2 训练模型train.py3.3 测试模型test…...

Oracle 慢查询排查步骤

目录 1. Oracle 慢查询排查步骤1.1. 前言1.2. 排查步骤1.2.1. 查询慢查询日志1.2.2. Oracle 查询 SQL 语句执行的耗时1.2.3. 定位系统里面哪些 SQL 脚本存在 TABLE ACCESS FULL (扫全表) 行为1.2.4. 查看索引情况1.2.5. 查看锁的竞争情况1.2.6. 其他锁语句 1.3. 慢查询优化1.3.…...

互联网Java工程师面试题·MyBatis 篇·第二弹

目录 16、Xml 映射文件中&#xff0c;除了常见的 select|insert|updae|delete标签之外&#xff0c;还有哪些标签&#xff1f; 17、Mybatis 的 Xml 映射文件中&#xff0c;不同的 Xml 映射文件&#xff0c;id 是否可以重复&#xff1f; 18、为什么说 Mybatis 是半自动 ORM 映射…...

Linux 下如何调试代码

debug 和 release 在Linux下的默认模式是什么&#xff1f; 是release模式 那你怎么证明他就是release版本? 我们知道如果一个程序可以被调试&#xff0c;那么它一定是debug版本&#xff0c;如果它是release版本&#xff0c;它是没法被调试的&#xff0c;所以说我们可以来调试一…...

腾讯云服务器简介和使用流程

腾讯云服务器在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵&#xff0c;但是自定义购买云服务器CPU内存带宽配置选择范围广&#xff0c;活动上购买只能选择固定的活动机&#xff0c;选择范围窄&#xff0c;但是云服务器价格便宜比较省钱。腾讯云服务器网来详细说下腾…...

python 二分查找

1.二分查找首先被查找的序列是一个有序的。 2.明确序列的左右边界 3.找出序列中间的元素&#xff0c;判断如果是要查找的元素&#xff0c;返回元素 4.如果中间元素&#xff0c;大于或者小于查找的元素&#xff0c;那么改变左右边间&#xff0c;直到中间的数等于查找的元素。…...

通过async方式在浏览器中调用web worker

通过async方式在浏览器中调用web worker 近年来&#xff0c;网络应用程序变得越来越复杂&#xff0c;增加了越来越多的功能。因此&#xff0c;性能和响应性已成为 Web 开发人员关注的重点。解决这个问题的一个办法是使用web worker。 web worker简介 web worker是一个 javas…...

FPGA project : TFT_LCD

实验目标&#xff1a; 驱动TFT_LCD显示十色彩条。 重点掌握的知识&#xff1a; 1&#xff0c;液晶显示器&#xff0c;简称LCD(Liquid Crystal Display)&#xff0c;相对于上一代CRT显示器(阴极射线管显示器)&#xff0c;LCD显示器具有功耗低、体积小、承载的信息量大及不伤眼…...

2023年-华为机试题库B卷(Python)【满分】

华为机试题库B卷 已于5月10号 更新为2023 B卷 &#xff08;2023-10-04 更新本文&#xff09; 华为机试有三道题目&#xff0c;前两道属于简单或中等题&#xff0c;分值为100分&#xff0c;第三道为中等或困难题&#xff0c;分值为200分。总分为 400 分&#xff0c;150分钟考试…...

创建GCP service账号并管理权限

列出当前GCP项目的所有service account 我们可以用gcloud 命令 gcloud iam service-accounts list gcloud iam service-accounts list DISPLAY NAME EMAIL DISABLED terraform …...

想要精通算法和SQL的成长之路 - 验证二叉树

想要精通算法和SQL的成长之路 - 验证二叉树 前言一. 验证二叉树1.1 并查集1.2 入度以及边数检查 前言 想要精通算法和SQL的成长之路 - 系列导航 并查集的运用 一. 验证二叉树 原题链接 思路如下&#xff1a; 对于一颗二叉树&#xff0c;我们需要做哪些校验&#xff1f; 首先…...

ERROR 6400 --- [ main] com.zaxxer.hikari.pool.HikariPool : root - Exception

在引用的日志中&#xff0c;报告了Hikari连接池初始化期间的异常。具体异常信息是"Exception during pool initialization"。这个异常可能是由于与MySQL数据库的通信链接失败导致的。在引用中也提到了与SSL连接相关的错误。 根据引用中提供的代码&#xff0c;可以看到…...

CART算法解密:从原理到Python实现

目录 一、简介CART算法的背景例子&#xff1a;医疗诊断 应用场景例子&#xff1a;金融风控 定义与组成例子&#xff1a;电子邮件分类 二、决策树基础什么是决策树例子&#xff1a;天气预测 如何构建简单的决策树例子&#xff1a;动物分类 决策树算法的类型例子&#xff1a;垃圾…...

C++项目:【高并发内存池】

文章目录 一、项目介绍 二、什么是内存池 1.池化技术 2.内存池 3.内存池主要解决的问题 4.malloc 三、定长的内存池 四、高并发内存池整体框架设计 1.高并发内存池--thread cache 1.1申请内存&#xff1a; 1.2释放内存&#xff1a; 1.3用TLS实现thread cache无锁访…...

**Modbus协议深度解析:基于Python的TCP通信实战与发散创新应用**在工业自动化领域,**Modbus协议

Modbus协议深度解析&#xff1a;基于Python的TCP通信实战与发散创新应用 在工业自动化领域&#xff0c;Modbus协议因其简单、稳定和开放性成为最广泛使用的串行通信标准之一。本文将从底层原理出发&#xff0c;深入剖析 Modbus TCP 的数据帧结构&#xff0c;并结合 Python 实现…...

如何使用CSS自定义属性加速前端开发:Open Props实用指南

如何使用CSS自定义属性加速前端开发&#xff1a;Open Props实用指南 【免费下载链接】open-props CSS custom properties to help accelerate adaptive and consistent design. 项目地址: https://gitcode.com/gh_mirrors/op/open-props Open Props是一个开源的CSS自定义…...

OpenClaw负载均衡:多Qwen3-VL:30B实例轮询策略

OpenClaw负载均衡&#xff1a;多Qwen3-VL:30B实例轮询策略 1. 为什么需要多模型实例负载均衡 上周我遇到一个棘手问题&#xff1a;用OpenClaw处理批量图片分析任务时&#xff0c;单个Qwen3-VL:30B实例频繁触发速率限制&#xff0c;导致任务队列堆积。更糟的是&#xff0c;有次…...

机械扑翼飞鸟机构3D图纸 Solidworks设计

机械扑翼飞鸟机构的设计聚焦于模拟鸟类飞行姿态&#xff0c;通过机械结构的协同运动实现扑翼动作。其核心作用在于将复杂的生物运动转化为可工程化的机械系统&#xff0c;为仿生飞行器研究提供基础支撑。该机构通常由传动系统、扑翼组件及支撑框架构成&#xff0c;传动系统通过…...

机器学习期末考突击指南:从线性回归到SVM的实战解题技巧

机器学习期末考突击指南&#xff1a;从线性回归到SVM的实战解题技巧 期末考试临近&#xff0c;面对机器学习课程中纷繁复杂的算法和公式&#xff0c;许多同学感到无从下手。本文将从实际考题出发&#xff0c;手把手带你攻克线性回归、朴素贝叶斯和SVM三大核心考点&#xff0c;不…...

终极实战指南:在Docker容器中运行Windows系统的完整解决方案

终极实战指南&#xff1a;在Docker容器中运行Windows系统的完整解决方案 【免费下载链接】windows Windows inside a Docker container. 项目地址: https://gitcode.com/GitHub_Trending/wi/windows 还在为Windows虚拟机占用大量系统资源而烦恼吗&#xff1f;想体验在容…...

桶排序:分布式排序的高效实现

桶排序&#xff1a;分布式排序的高效实现 算法原理 核心思路 桶排序是一种分布式排序算法&#xff0c;其核心思想是&#xff1a; 将待排序的数据分到有限数量的桶里每个桶再分别进行排序&#xff08;可以使用其他排序算法&#xff09;最后将各个桶中的数据有序地合并起来 复杂度…...

告别8小时UI适配工作:3大核心能力重新定义Figma到Unity流程

告别8小时UI适配工作&#xff1a;3大核心能力重新定义Figma到Unity流程 【免费下载链接】UnityFigmaBridge Easily bring your Figma Documents, Components, Assets and Prototypes to Unity 项目地址: https://gitcode.com/gh_mirrors/un/UnityFigmaBridge 在游戏开发…...

巨有科技智慧市集系统,数字化工具降本增效!

从城市商圈到景区古镇&#xff0c;从乡村田园到文创园区&#xff0c;各类市集遍地开花&#xff0c;但管理难题始终是制约行业发展的最大瓶颈。人工登记杂乱、对账结算繁琐、现场管控滞后、数据完全空白&#xff0c;一场中型市集就要耗费大量人力物力&#xff0c;大型市集更是纠…...

GetQzonehistory完整指南:三步实现QQ空间历史说说一键备份

GetQzonehistory完整指南&#xff1a;三步实现QQ空间历史说说一键备份 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory GetQzonehistory是一款专为QQ空间用户设计的智能数据备份工具&…...