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

你可能感兴趣的:(hive,数据库,sql,mysql)