hive中的lateral view 与explode(列转行)
我们某个字段A,全部由分号组成的字符串,如adfrgter@piuj.com;dfrgter1@piuj.com;dfrgter22@piuj.com
我的需要是将这个字段拆分放到某一行里面。
id | email_add |
---|---|
1 | adfrgter@piuj.com;dfrgter1@piuj.com;dfrgter22@piuj.com |
转行为:
|
id | new_email_add |
---|---|
1 | adfrgter@piuj.com |
1 | dfrgter1@piuj.com |
1 | dfrgter22@piuj.com |
其语法如下:
(select * from 表A where 字段B = 条件B) a
lateral view explode(a.字段A, '\073') myTable as new_字段A;
值得注意的是,
- 这里分号要使用\073代替否则无法拆分
- lateral view 的在from之后,或者在子查询之后
- 生成的虚拟表myTable,可自定义名字,但不可以省略不写