hive行转列lateral view explode用法
来源:互联网 发布:js获取css样式表 编辑:程序博客网 时间:2024/05/29 10:11
lateral view用于和split, explode等UDTF一起使用,它能够将一行数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。
方法/步骤
先把要转换的各列拼到一起,如有9列,下面为了测试方便,我用1,2,3,4,5,6,7,8,9代替,sql为select concat_ws(',','1','2','3','4','5','6','7','8','9') from test.dual;其中我的test.dual为只有一条记录的表,可以根据需要变动效果如下:
用split函数把上面拼接的字符串转换为分割数组,类型为array。sql为select split(concat_ws(',','1','2','3','4','5','6','7','8','9'),',') spfrom test.dual;效果如下:
上面返回结果为array数组类型,如果想取上面数组的第5个数的值也就是5,加个下标就可以(注:跟行转列无关)sql为:select split(concat_ws(',','1','2','3','4','5','6','7','8','9'),',')[4]from test.dual; 效果图如下:
用explode函数实现行转列,sql为 select explode(split(concat_ws(',','1','2','3','4','5','6','7','8','9'),',')) from test.dual;效果如下:
上面方法实现了行转列,不过仅仅实现了一列,如果表中还有其他字段,也想一起显示出来,就要用到lateral view 了,不过写法更上面有些不同,sql为:select s.*,spfrom test.dual slateral view explode(split(concat_ws(',','1','2','3','4','5','6','7','8','9'),',')) t as sp;效果如下图:
解释一下,from后面是你的表名,在表名后面加lateral view explode。。。(你的行转列sql) ,还必须要起一个别名,我这个字段的别名为sp。然后再看看select后面的 s.*,就是原表的字段,我这里面只有一个字段,且为X,效果就是上面的图片效果了。
注意事项
写法有点怪,一定不要写错
不要忘记起别名,要不select没列可写
方法/步骤
先把要转换的各列拼到一起,如有9列,下面为了测试方便,我用1,2,3,4,5,6,7,8,9代替,sql为select concat_ws(',','1','2','3','4','5','6','7','8','9') from test.dual;其中我的test.dual为只有一条记录的表,可以根据需要变动效果如下:
用split函数把上面拼接的字符串转换为分割数组,类型为array。sql为select split(concat_ws(',','1','2','3','4','5','6','7','8','9'),',') spfrom test.dual;效果如下:
上面返回结果为array数组类型,如果想取上面数组的第5个数的值也就是5,加个下标就可以(注:跟行转列无关)sql为:select split(concat_ws(',','1','2','3','4','5','6','7','8','9'),',')[4]from test.dual; 效果图如下:
用explode函数实现行转列,sql为 select explode(split(concat_ws(',','1','2','3','4','5','6','7','8','9'),',')) from test.dual;效果如下:
上面方法实现了行转列,不过仅仅实现了一列,如果表中还有其他字段,也想一起显示出来,就要用到lateral view 了,不过写法更上面有些不同,sql为:select s.*,spfrom test.dual slateral view explode(split(concat_ws(',','1','2','3','4','5','6','7','8','9'),',')) t as sp;效果如下图:
解释一下,from后面是你的表名,在表名后面加lateral view explode。。。(你的行转列sql) ,还必须要起一个别名,我这个字段的别名为sp。然后再看看select后面的 s.*,就是原表的字段,我这里面只有一个字段,且为X,效果就是上面的图片效果了。
注意事项
写法有点怪,一定不要写错
不要忘记起别名,要不select没列可写
0 0
- hive行转列lateral view explode用法
- Lateral View用法 与 Hive UDTF explode
- Lateral View用法 与 Hive UDTF explode
- Lateral View用法 与 Hive UDTF explode
- hive lateral view explode 使用
- hive:explode() 与 lateral view
- hive lateral view 与 explode详解
- hive lateral view 与 explode详解
- hive lateral view 与 explode详解
- Hive--行转列(Lateral View explode())和列转行(collect_set() 去重)
- hive常用UDF and UDTF函数介绍-lateral view explode()
- hive sql 中lateral view explode/json_tuple的使用
- hive collect_set,lateral view,explode 实现行列转换
- SQL 之 lateral view explode()
- 行转多列lateral view explode详解
- hive中的lateral view 用法详解上篇
- hive中的lateral view 用法详解下篇
- Hive Lateral view介绍
- python: strip()函数
- cuda8.0配置opencv2.4.9可能遇到的两个问题
- AAC格式文件解析
- CSDN学霸课表——iOS人机交互设计规范精讲
- eclipse提示Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-com
- hive行转列lateral view explode用法
- RxJava-操作符
- MySQL必知必会-18MySQL更新数据
- FineReport中如何自定义登录界面
- java元注解及源码浅析
- HDU 4310 Hero
- App主界面Tab的四种实现方法(上)
- Redis主从复制和集群配置系列之四
- android中intent的基本使用方法