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

hive行转多列LATERAL VIEW explode

该文参考了:http://blog.sina.com.cn/s/blog_7e04e0d00101csic.html

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+LateralView

lateral view用于和split、explode等UDTF一起使用的,能将一行数据拆分成多行数据,在此基础上可以对拆分的数据进行聚合,lateral view首先为原始表的每行调用UDTF,UDTF会把一行拆分成一行或者多行,lateral view在把结果组合,产生一个支持别名表的虚拟表。

单个LATERAL VIEW:

源表(table1)数据{A:string B:array<BIGINT> C:string}

A                         B                                C

190     [1030,1031,1032,1033,1190]      select id
191     [1030,1031,1032,1033,1190]      select id

希望的结果是:

190    1030  select id

190    1031  select id

190    1032  select id

190    1033  select id

190    1190  select id

191    1030  select id

191    1031  select id

191    1032  select id

191    1033  select id

191    1190  select id

故使用select A,B,C from table_1 LATERAL VIEW explode(B) table1 as B得到上述结果

多个LATERAL VIEW的介绍:

LATERAL VIEW clauses are applied in the order that they appear. For example with the following base table:

Array<int> col1

Array<string> col2

[1, 2]

[a", "b", "c"]

[3, 4]

[d", "e", "f"]

SELECT  myCol1, myCol2  FROM  baseTable
LATERAL  VIEW  explode(col1) myTable1  AS  myCol1
LATERAL  VIEW  explode(col2) myTable2  AS  myCol2;
结果如下:

int myCol1

string myCol2

1

"a"

1

"b"

1

"c"

2

"a"

2

"b"

2

"c"

3

"d"

3

"e"

3

"f"

4

"d"

4

"e"

4

"f"

 

 

 复杂方式:

select * from tb_split;

20141018  aa|bb 7|9|0|3

20141019  cc|dd  6|1|8|5

使用方式:select datenu,des,type from tb_split 

lateral view explode(split(des,"//|")) tb1 as des

lateral view explode(split(type,"//|")) tb2 as type

执行过程是先执行from到 as cloumn的列过程,在执行select 和where后边的语句;

转载于:https://www.cnblogs.com/judylucky/p/3713774.html

相关文章:

  • POJ-1182-食物链 解题报告
  • 关于WCF开发 相应流程注意事项
  • asp.net mvc部署
  • [leetcode]_String to Integer (atoi)
  • 收到offer 7B
  • Python学习_算数运算函数
  • 【struts2】Result和ResultType
  • JVM调优[转]
  • cocos2d-x3.0 编译android出现的问题笔记  cocos2dx3.0 Android.mk No rule to make target
  • WCF学习笔记二
  • php利用新浪接口查询ip获取地理位置
  • 我的推送架构解决方案
  • Android NDK JNI C++ 13 pthread多线程
  • 铁大课表 详细设计说明书
  • 结合FireBreath在Chrome/FireFox的多进程模式下崩溃一例
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • avalon2.2的VM生成过程
  • Bootstrap JS插件Alert源码分析
  • Brief introduction of how to 'Call, Apply and Bind'
  • CentOS 7 防火墙操作
  • docker-consul
  • echarts的各种常用效果展示
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • hadoop集群管理系统搭建规划说明
  • JS学习笔记——闭包
  • Making An Indicator With Pure CSS
  • React的组件模式
  • Swoft 源码剖析 - 代码自动更新机制
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • Zepto.js源码学习之二
  • 闭包,sync使用细节
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 关于List、List?、ListObject的区别
  • 技术胖1-4季视频复习— (看视频笔记)
  • 经典排序算法及其 Java 实现
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (四) 虚拟摄像头vivi体验
  • .net framework4与其client profile版本的区别
  • .NET MVC第五章、模型绑定获取表单数据
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • ??在JSP中,java和JavaScript如何交互?
  • @angular/cli项目构建--Dynamic.Form
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [acwing周赛复盘] 第 69 场周赛20220917