hive使用lateral view explode和split将一行拆多行

问题:

有一个表(表名:book,两个字段:id,desc)

id     desc

001    书名: 追风筝的人, ISBN编号: 9787208061644, 作者: 卡勒德.胡赛尼

002    书名: 秘密花园, ISBN编号: 9787550252585, 作者: 乔汉娜·贝斯福

需求:

其中desc字段包含了几个参数信息,需把它拆分开来,一行一个参数,结果如下

001    书名: 追风筝的人

001    ISBN编号: 9787208061644

001     作者: 卡勒德.胡赛尼

002    书名: 秘密花园

002    ISBN编号: 9787550252585

002    作者: 乔汉娜·贝斯福

解决办法:

select id,sp from book a  lateral view explode(split(a.desc,‘,‘)) t as sp where 1=1;

id     sp

001  书名: 追风筝的人

001  ISBN编号: 9787208061644

....

其中sp是拆出来的字段的,结果和需求一样。

非常简练,虽然hive有不能insert,update的缺点,但很多sql语法都支持,不失为大数据分析的一个好工具!

时间: 2024-08-23 14:28:59

hive使用lateral view explode和split将一行拆多行的相关文章

hive行转多列LATERAL VIEW explode

源表(table1)数据{A:string B:array<BIGINT> C:string} A                         B                                C 190     [1030,1031,1032,1033,1190]      select id191     [1030,1031,1032,1033,1190]      select id 希望的结果是: 190    1030  select id 190    103

Hive lateral view explode

select 'hello', x from dual lateral view explode(array(1,2,3,4,5)) vt as x 结果是: hello   1 hello   2 hello   3 hello   4 hello   5 来自为知笔记(Wiz)

hive splict, explode, lateral view, concat_ws

hive> create table arrays (x array<string>) > row format delimited fields terminated by '\001' > collection items terminated by '\002' > ; OK Time taken: 0.574 seconds hive> show tables; OK arrays jigou Time taken: 0.15 seconds, Fetch

lateral view

原文地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+LateralView# lateral view用于和split, explode等UDTF一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合. 一个简单的例子,假设我们有一张表pageAds,它有两列数据,第一列是pageid string,第二列是adid_list,即用逗号分隔的广告ID集合: string pageid Ar

Lateral View 语法

Lateral View 语法 1 lateralView: LATERAL VIEW udtf(expression) tableAlias AS columnAlias (',' columnAlias)* 2 fromClause: FROM baseTable (lateralView)* Lateral View 描述 Lateral View 用于UDTF(user-defined table generating functions)中将行转成列,和split, explode等U

Lateral View使用指南

https://blog.csdn.net/sunnyyoona/article/details/62894761 select sum(pitem) from (select map_values(repay_principal) principal from dw.dw_xxx) t lateral view explode (t.principal) ptab as pitem 原文地址:https://www.cnblogs.com/0xcafedaddy/p/9560603.html

explode,split,preg_split性能比较

explode,split,preg_split性能比较 分类: php2012-07-12 09:46 1109人阅读 评论(1) 收藏 举报 三个函数都是用来对字符串进行分割,下面分几个实验来比较之间的性能. 1. explode与split比较 都用字符进行分割,执行10次 代码: [php] view plaincopy for($num=0;$num<9;$num++) { $stime=microtime(); for($i=0;$i<10000;$i++) { explode('

【PHP】函数explode和split的区别

前言 之所以做这个,是因为这两个函数的作用很像,都是把字符串转换成数组. explode 从下面的例子可以看出,生成的数组是有对应的顺序的. $pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; $pieces = explode(" ", $pizza); echo $pieces[0]; // piece1 echo $pieces[1]; // piece2 // 示例 2 $data = "fo

php的explode()和split()的区别

都是分割,区别就是,split要用转移字符: 1.   $test = end(explode('.', 'abc.txt')); echo $test;//output txt 2.   $test1 = end(split('.','abc.txt')); echo $test1;//no output 3.  $test1 = end(split('\.','abc.txt')); echo $test1;//output txt