hive:如何在横向视图分解中包含空行

t0ybt7op  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(349)

我有一张table如下:

user_id email
u1      e1, e2
u2      null

我的目标是将其转换为以下格式:

user_id email
u1      e1
u1      e2
u2      null

为此,我在hive中使用了侧向视图explode()函数,如下所示:

select *  FROM  table
       LATERAL VIEW explode (split(email ,',')) email AS email_id

但这样做的u2行被跳过,因为它在电子邮件中有空值。我们怎样才能在输出中也包含空值呢?
编辑:我正在使用一种解决方法,将此表与基表合并而不进行分解,但我认为数据将被再次扫描一次。我想知道有没有更好的方法。

zd287kbt

zd287kbt1#

包括 OUTER 在查询中获取具有空值的行
比如说,

select *  FROM table LATERAL VIEW OUTER explode (  split (  email  ,','  ) ) email AS email_id;

检查此链接->https://cwiki.apache.org/confluence/display/hive/languagemanual+lateralview#languagemanuallateralview-外侧视图

相关问题