目录

  • 1、explode()函数
  • 2、posexplode()函数
  • 3、lateral view函数

1、explode()函数

英文释义:
explode() takes in an array (or a map) as an input and outputs the elements of the array (map) as separate rows. UDTFs can be used in the SELECT expression list and as a part of LATERAL VIEW.

As an example of using explode() in the SELECT expression list, consider a table named myTable that has a single column (myCol) and two rows:
总结:explode就是将hive一行中复杂的array或者map结构拆分成多行
举例:

hive>with temp  as( select '2:00,3:00,4:00,5:00' as examp_data)select
data
from temp
lateral view explode(split(examp_data,',')) view1 as data;
2:00
3:00
4:00
5:00

思考:现在是一列,如果是两列呢?

hive>with temp  as( select 'a,b,c,d' as examp_data1,'2:00,3:00,4:00,5:00' as examp_data2)select
data1
,data2
from temp
lateral view explode(split(examp_data1,',')) view1 as data1
lateral view explode(split(examp_data2,',')) view1 as data2
data1,data2
a,2:00
a,3:00
a,4:00
a,5:00
b,2:00
b,3:00
b,4:00
b,5:00
c,2:00
c,3:00
c,4:00
c,5:00
d,2:00
d,3:00
d,4:00
d,5:00

显然和我们想象的是有出入的,我们想让’a,b,c,d’和’2:00,3:00,4:00,5:00’一一对应该如何实现呢?

2、posexplode()函数

特点是不仅炸裂出数值,还附带索引,实现多列进行多行转换;
上述的例子可以通过posexplode()函数实现;
示例如下:

hive>with temp  as( select 'a,b,c,d' as examp_data1,'2:00,3:00,4:00,5:00' as examp_data2)select
data1
,data2
from temp
lateral view posexplode(split(examp_data1,',')) view1 as index1,data1
lateral view posexplode(split(examp_data2,',')) view1 as index2,data2
where index1=index2
data1,data2
a,2:00
b,3:00
c,4:00
d,5:00

3、lateral view函数

英文解释:
Lateral View Syntax
lateralView: LATERAL VIEW udtf(expression) tableAlias AS columnAlias (’,’ columnAlias)*
fromClause: FROM baseTable (lateralView)*

Description
Lateral view is used in conjunction with user-defined table generating functions such as explode(). As mentioned in Built-in Table-Generating Functions, a UDTF generates zero or more output rows for each input row. A lateral view first applies the UDTF to each row of base table and then joins resulting output rows to the input rows to form a virtual table having the supplied table alias.

lateral view用于和split, explode等UDTF一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合;
1、Lateral View用于和UDTF函数(explode、split)结合来使用

2、首先通过UDTF函数拆分成多行,再将多行结果组合成一个支持别名的虚拟表

3、主要解决在select使用UDTF做查询过程中,查询只能包含单个UDTF,不能包含其他字段、以及多个UDTF的问题

4、语法:LATERAL VIEW udtf(expression) tableAlias AS columnAlias (’,’ columnAlias)
上面已举例,不在重复;

Hive之explode()函数和posexplode()函数和lateral view函数相关推荐

  1. Hive SQL 中ARRAY或MAP类型数据处理:lateral view explode()/posexplode()——行转列函数

    前言:在对表数据进行批量处理过程中,常常碰上某个字段是一个array或者map形式的字段,一列数据的该字段信息同时存在多个值,当我们需要取出该数组中的每一个值实现一一对应关系的时候,可以考虑使用lat ...

  2. hive的lateral view 与 explode函数的使用transArray

    主要介绍explode和posexplode函数的使用.类似于flatmap把一个数组打散 lateral view 侧视图.原表的每一行和explode_lateral_view进行笛卡尔积关联,也 ...

  3. hive中的lateral view 与 explode函数的使用

    explode与lateral view在关系型数据库中本身是不该出现的,因为他的出现本身就是在操作不满足第一范式的数据(每个属性都不可再分), 本身已经违背了数据库的设计原理(不论是业务系统还是数据 ...

  4. Hive 之 explode 和 posexplode

    目录 一. explode, 行转列. 1.1. 用于array类型的数据 1.2. 用于map类型的数据 二. explode函数的局限性 三. lateral view 3.1 第一种形式 四. ...

  5. Hive Lateral View + explode 详解

    hive中的函数分为3类,UDF函数.UDAF函数.UDTF函数 UDF:一进一出 UDAF:聚集函数,多进一出,类似于:count/max/min UDTF:一进多出,如explore().pose ...

  6. Hive列转行 (Lateral View + explode)详解

    需求: <疑犯> 悬疑,动作,科幻,爱情 <lies> 悬疑,警匪,动作,心理,剧情 <战狼> 战争,动作,灾难转成如下格式:<疑犯> 悬疑 <疑 ...

  7. explode与lateral view解析 hive

    工作中看代码时遇到lateral view explode(split(sni_type,','))  snTable as sni_info ,初看挺一脸懵逼的,细查之后才明白是对字段sni_typ ...

  8. Hive Lateral View

    目录 Hive explode介绍: Hive posexplode介绍: Lateral View介绍: 使用多个Lateral View: outer关键字: Hive explode介绍: 它会 ...

  9. hive中实现行转列_Hive之行转列lateral view用法

    一般写sql经常会遇到行转列或者列转行之类的操作,就像concat_ws之类的函数被广泛的使用,今天这个也是经常要使用的拓展方法. Lateral View 语法 描述 横向视图与用户定义的表生成函数 ...

最新文章

  1. 7.1 TensorFlow笔记(基础篇):加载数据之预加载数据与填充数据
  2. Mongodb数据查询 | Mongodb
  3. 认识JavaWeb,servlet, JSP, Tomcat, http协议,Web服务器
  4. GSM/GPRS模块 AT指令集C语言编程——基于有方M660+和MSP430单片机
  5. 真诚推荐几个最值得关注的前端公众号
  6. 两个队列实现一个栈思路c语言,两个栈实现队列功能C语言实现能运行!
  7. 前端学习(2462):打包优化
  8. ps图像压缩插件:TinyPNG and TinyJPG for Mac 支持ps2021
  9. Bailian2753 菲波那契数列(POJ NOI0202-1755)【数列+记忆化递归】
  10. C++ lock 加锁,解锁
  11. matlab logistic拟合,用matlab拟合Logistic,4参数logistic
  12. 串口DCB定义,配置例程
  13. Ubuntu/Deepin下Python3.8出现SSL错误的解决方案
  14. “程序员吐槽大会”上,被怼坏的阿里美女产品经理,做出了2亿人在用的钉邮钉盘!...
  15. Voyager的路由
  16. 一个完整的软件项目开发流程是怎样的呢
  17. RDKit | 子结构搜索和MCS算法
  18. 交易所步入「后FTX 时代」,WEEX唯客等后发新秀拉开补位战?
  19. Uva 1626(区间dp)
  20. 带分数 --三种方法详解

热门文章

  1. 安装Spring报错An error occurred while collecting items to be installed
  2. 【每日一题】海战 (深度优先搜索)
  3. 一篇感情真挚的HR活动稿
  4. 福玛特机器人评测_福玛特E-R300G扫地机器人评测
  5. C++(重点) 类与对象(15320字附带源码图片)
  6. 转载 半步八拍(单双八拍)步进电机
  7. 根据某三国游戏提供的武将资料,完成需求:
  8. linux 内存管理 (四) 内存与IO的交互
  9. 忙碌一天,做一天搬运工
  10. java微信公众号——微信JS-SDK的使用