HIve 中explode,inline与lateral view

HIve 中explode,inline与lateral view

1.功能展示

功能展示

2.使用注意事项

  • 不支持与其他字段同时使用
  • 不支持一次对同字段使用多次explode
  • 不支持在group by/sort by/cluster by 后使用explode

3.与lateral view 一起使用

原本格式
SELECT myCol1, myCol2 FROM baseTable

LATERAL VIEW explode(col1) myTable1 AS myCol1

LATERAL VIEW explode(col2) myTable2 AS myCol2;

结果:
在这里插入图片描述

4.inline(array(Struct))将结构数据展开为多列

create table tmp_user_scan_info_struct_mid stored as orc as
select 
    uid,
    named_struct('page_id', page_id, 
                 'page_name', page_name, 
                 'log_date', log_date
                 ) as named_struct_1
from tmp_user_scan_info;

select * from tmp_user_scan_info_struct_mid;
+------+---------------------------------------------------------+--+
| uid  |                     named_struct_1                      |
+------+---------------------------------------------------------+--+
| 0    | {"page_id":10,"page_name":"A","log_date":"2015-01-01"}  |
| 0    | {"page_id":20,"page_name":"B","log_date":"2015-01-02"}  |
| 1    | {"page_id":10,"page_name":"A","log_date":"2016-02-01"}  |
| 1    | {"page_id":20,"page_name":"B","log_date":"2016-02-02"}  |
+------+---------------------------------------------------------+--+

select
    uid,
    page_id,
    page_name,
    log_date
from tmp_user_scan_info_struct_mid t
lateral view outer inline(array(named_struct_1)) tmp as page_id, page_name, log_date;

select inline(array(named_struct_1)) from tmp_user_scan_info_struct_mid;
+------------+----------+-------------+--+
| page_name  | page_id  |  log_date   |
+------------+----------+-------------+--+
| A          | 10       | 2015-01-01  |
| B          | 20       | 2016-02-02  |
+------------+----------+-------------+--+

-------------------- 支持多列别名(多字段名)---------------
select inline( array(struct('A',10,date '2015-01-01'),
                     struct('B',20,date '2016-02-02')
                     ) 
             ) as (page_name, page_id, log_date);
+------------+----------+-------------+--+
| page_name  | page_id  |  log_date   |
+------------+----------+-------------+--+
| A          | 10       | 2015-01-01  |
| B          | 20       | 2016-02-02  |
+------------+----------+-------------+--+

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值