LATERAL VIEW EXPLODE与LATERAL VIEW OUTER EXPLODE的区别

Posted 伴生伴熟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LATERAL VIEW EXPLODE与LATERAL VIEW OUTER EXPLODE的区别相关的知识,希望对你有一定的参考价值。

LATERAL VIEW EXPLODE与LATERAL VIEW OUTER EXPLODE的区别

  • LATERAL VIEW EXPLODE 当需要拆分的字段为null时,null的那行数据不会出现在结果
  • LATERAL VIEW OUTER EXPLODE 所有行都会显示在结果集中(包含要拆分的字段为null时)

LATERAL VIEW EXPLODE :

SELECT  a.c1,
        a.c2,
        b.c22
FROM    (
            SELECT  '1' AS c1,
                    'a,b,c' AS c2
            UNION ALL
            SELECT  '2' AS c1,
                    NULL AS c2
            UNION ALL
            SELECT  '3' AS c1,
                    '' AS c2
        ) a
LATERAL VIEW
        EXPLODE(split(a.c2, ',')) b AS c22;
结果:
c1	c2	c22
1	a,b,c	a
1	a,b,c	b
1	a,b,c	c
3		

LATERAL VIEW OUTER EXPLODE :

SELECT  a.c1,
        a.c2,
        b.c22
FROM    (
            SELECT  '1' AS c1,
                    'a,b,c' AS c2
            UNION ALL
            SELECT  '2' AS c1,
                    NULL AS c2
            UNION ALL
            SELECT  '3' AS c1,
                    '' AS c2
        ) a
LATERAL VIEW OUTER
        EXPLODE(split(a.c2, ',')) b AS c22;
结果:
c1	c2	c22
1	a,b,c	a
1	a,b,c	b
1	a,b,c	c
3		
2	NULL	NULL

以上是关于LATERAL VIEW EXPLODE与LATERAL VIEW OUTER EXPLODE的区别的主要内容,如果未能解决你的问题,请参考以下文章

hive函数之~hive当中的lateral view 与 explode

Hive中grouping sets与lateral view explode的用法

Hive中grouping sets与lateral view explode的用法

explode和lateral view用法

你真的了解Lateral View explode吗?--源码复盘

Hive之explode()函数和posexplode()函数和lateral view函数