ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第八章_函数【explode、lateral view、列转行】

2022-02-05 18:03:32  阅读:277  来源: 互联网

标签:-- lateral 刘备 explode friend array select view


1. explode (遍历集合 UDTF函数)
说明 : 将hive 中array 数据遍历成多行, map 遍历成 多行、多列(key,value)
注意 : 1. udtf 只支持 select 子语句中有一个表达式
2. explode() takes an array or a map as a parameter 只能接受一个 array或者map的参数
示例 :
-- 1. array
select explode(split('da,wang,lai,le',','));
-- 2. map
maptab.name maptab.friend
刘备 {"关羽":120,"山西":null}
曹操 {"许褚":20}
孙权 {"吕蒙":null}
-- 执行sql
select explode(friend) from maptab;
-- 结果
key value
关羽 120
山西 NULL
许褚 20
吕蒙 NULL

2. lateral view (侧视图)
1. 语法 : lateral view udtf(expression) tablealias as columnalias
2. 说明 : 将 udtf函数生成的多行数据,作为一个表(视图)使用

3. 示例(列转行) :
-- 人员表
select * from arraytab;
arraytab.name arraytab.friends
刘备1 ["关羽","张飞","马超","诸葛亮","黄忠","赵云"]
曹操1 ["许褚","荀彧","司马懿"]
-- 操作sql
select name,friend from arraytab
lateral view explode(friends) t1 as friend;
-- 结果
name friend
刘备1 关羽
刘备1 张飞
刘备1 马超
刘备1 诸葛亮
刘备1 黄忠
刘备1 赵云
曹操1 许褚
曹操1 荀彧
曹操1 司马懿

标签:--,lateral,刘备,explode,friend,array,select,view
来源: https://www.cnblogs.com/bajiaotai/p/15864506.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有