**Hive lateral view explode()的使用 **
每天一点点,记录工作中实际可行操作
lateral view为侧视图,意义是为了配合UDTF来使用,把某一行数据拆分成多行数据.不加lateral view的UDTF只能提取单个字段拆分,并不能塞会原来数据表中.加上lateral view就可以将拆分的单个字段数据与原始表数据关联上.
在使用lateral view的时候需要指定视图别名和生成的新列别名
例如
select id,num from table lateral view explode(array1) subview as num;
subview为视图别名,num为指定新列别名
lateral view explode 相当于一个拆分array1字段的虚表,然后根据id将其与原表进行笛卡尔积关联
实际例子
假设 all_daye 的内容为 0,3,1,279
select id, name, max(detail_daye) max_daye --取解析后的最大一个
from table_name ---你的表名
LATERAL VIEW explode(split(all_daye,',')) dayee ---视图别名,名字随意取
AS detail_daye ----新列别名,名字随意取
where deleted=0 and id = '118'
and detail_daye not in (1,3) --解析后的新列作为限制条件
group by id, name
输出结果
还想不明白的,再读两遍,就明白了
转载:https://blog.csdn.net/YmeBtc/article/details/100996470
查看评论