- 1、与表生成函数结合使用,将函数的输入和输出连接
- 2、OUTER关键字:即使output为空也会生成结果
select name,work_place,loc from employee lateral view outer explode(split(null,',')) a as loc;
- 3、支持多层级
select name,wps,skill,score from employee
lateral view explode(work_place) work_place_single as wps
lateral view explode(skills_score) sks as skill,score;
- 4、通常用于规范化行或解析JSON
示例:
有一张hive外部表employee_external,表中数据如下:
建表语句如下:
我们发现第二个字段work_place是数组,现在我们需将work_place里的内容扁平化处理,这时候可以用侧视图
select name, wps, sex_age,skills_score,depart_title from employee_external
lateral view explode(work_place) workplace as wps;
我们发现skills_score的格式比较固定,由两部分组成,现在我们需要把skills_score分为skills和score,也可以用侧视图,
select name, wps, skill,score from employee_external
lateral view explode(work_place) workplace as wps
lateral view explode(skills_score) sks as skill,score;
虽然sex_age格式看着也比较固定,但是不能用侧视图,会报错FAILED: UDFArgumentException explode() takes an array or a map as a parameter
,也就是说字段类型是array或者map才能用侧视图。