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

hive中array相关函数总结

目录

  • hive官方函数解释
  • 示例
  • 实战

hive官方函数解释

hive官网函数大全地址: hive官网函数大全地址

Return TypeNameDescription
arrayarray(value1, value2, …)Creates an array with the given elements.
booleanarray_contains(Array, value)Returns TRUE if the array contains value.
arraysort_array(Array)Sorts the input array in ascending order according to the natural ordering of the array elements and returns it (as of version 0.9.0).
Texplode(ARRAY a)Explodes an array to multiple rows. Returns a row-set with a single column (col), one row for each element from the array.
int,Tposexplode(ARRAY a)Explodes an array to multiple rows with additional positional column of int type (position of items in the original array, starting with 0). Returns a row-set with two columns (pos,val), one row for each element from the array.

示例

1、array(value1, value2, …)
创建一个 Array 对象,由一组值组成。

SELECT array(85, 90, 78, 92, 86) AS scores;
---结果
scores
[85,90,78,92,86]

2、array_contains(Array, value)
判断一个值是否在 Array 对象中存在。

SELECT array_contains(array(85, 90, 78, 92, 86), 60) AS is_passed;
---结果
is_passed
falseSELECT if(array_contains(array(85, 90, 78, 92, 86), 60),1,0) AS is_passed;
---结果
is_passed
0

3、sort_array(Array)
sort_array 函数可以用于对 Array 对象中的元素进行排序。具体来说,sort_array 函数会将 Array 对象中的元素按照升序顺序进行排序,并返回一个新的排序后的 Array 对象。

SELECT sort_array(array(85, 90, 78, 92, 86)) AS sorted_scores;
---结果
sorted_scores
[78,85,86,90,92]

4、explode (array)
explode 函数可以用于将一个 Array 对象拆分成多行。具体来说,explode 函数会将 Array 对象中的每个元素拆分成一行,并与原始数据集中的其他字段一起返回。

select explode(array('A','B','C'));
select explode(array('A','B','C')) as col;
select tf.* from (select 0) t lateral view explode(array('A','B','C')) tf;
select tf.* from (select 0) t lateral view explode(array('A','B','C')) tf as col;---上述四个结果均为
col
A
B
C

5、posexplode (array)

select posexplode(array('A','B','C'));
select posexplode(array('A','B','C')) as (pos,val);
select tf.* from (select 0) t lateral view posexplode(array('A','B','C')) tf;
select tf.* from (select 0) t lateral view posexplode(array('A','B','C')) tf as pos,val;
---上述四个结果均为
pos          col	
0             A	
1             B
2             C

实战

下面全年级的学生成绩单的部分,包含学生姓名,课程,分数,年级排名,要求将每人的成绩进行汇总整理:按排名,课程和成绩的顺序
数据:

    '小明' ,'语文'  ,80 as score , 100 '小明' ,'数学'  ,90 as score,  85 '小明' ,'英语'  ,75 as score,  203 '小花' ,'语文'  ,85 as score , 90 '小花' ,'数学'  ,65 as score , 350 '小花' ,'英语'  ,90 as score , 20 

代码实现:

with students as(select '小明' as name,'语文' as course ,80 as score , 100 as rkunion all select '小明' as name,'数学' as course ,90 as score,  85 as rkunion all select '小明' as name,'英语' as course ,75 as score,  203 as rkunion all select '小花' as name,'语文' as course ,85 as score , 90 as rkunion all select '小花' as name,'数学' as course ,65 as score , 350 as rkunion all select '小花' as name,'英语' as course ,90 as score , 20 as rk
)
SELECT name, concat_ws(',', sort_array(collect_list(concat_ws(':', lpad(cast(rk as string), 4, '0'), course, cast(score as string) )))) AS sorted_scores
FROM students
GROUP BY name;
---结果
name                          sorted_scores
小明                 0085:数学:90,0100:语文:80,0203:英语:75
小花                 0020:英语:90,0090:语文:85,0350:数学:65

相关文章:

  • 验证码服务使用指南
  • 算法基础之最长公共子序列
  • 基于Python的新能源汽车销量分析与预测系统
  • 前端学习笔记
  • 平衡二叉树的构建(递归
  • 【WPF.NET开发】数据绑定应用场景
  • 如何开发专属花店展示平台小程序?
  • uni-app 工程目录结构介绍
  • paddle 56 将图像分类模型嵌入到目标检测中并实现端到端的部署(用图像分类模型进行目标检测切片分类)
  • Ubuntu20.04纯命令配置PCL(点云库)
  • 《剑指offer》Java版--13.机器人的运动范围(BFS)
  • leetcode 38. 外观数列(medium)(优质解法)
  • Spring之国际化:i18n
  • javaweb初体验
  • Python 常用模块re
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • MySQL的数据类型
  • Netty源码解析1-Buffer
  • Python连接Oracle
  • uni-app项目数字滚动
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 和 || 运算
  • 人脸识别最新开发经验demo
  • 使用docker-compose进行多节点部署
  • 使用SAX解析XML
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • Java数据解析之JSON
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • #在 README.md 中生成项目目录结构
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (06)Hive——正则表达式
  • (8)STL算法之替换
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .net core 连接数据库,通过数据库生成Modell
  • .NET Core 中插件式开发实现
  • .NET 回调、接口回调、 委托
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • ::什么意思
  • @Not - Empty-Null-Blank
  • @RequestMapping 的作用是什么?
  • @synthesize和@dynamic分别有什么作用?
  • @拔赤:Web前端开发十日谈
  • [04]Web前端进阶—JS伪数组
  • [20171101]rman to destination.txt
  • [CF543A]/[CF544C]Writing Code
  • [Design Pattern] 工厂方法模式
  • [docker] Docker的数据卷、数据卷容器,容器互联