RICH-ATONE

Hive高阶函数posexplode(可以用于生成动态日期序列)

示例1:

现要生成start_time('2020-11-01')到end_time("2020-11-30")之间的所有日期

select  i, date_add('2020-11-01', pe.i) as dynamic_date ,'2020-11-01' as start_time, '2020-11-30' end_time
from  ods.test   
lateral view posexplode(split(space(datediff('2020-11-30', '2020-11-01')),' ')) pe as i, x  limit 30 ;

  ps:第一列为生成的索引值。其中的space函数为要生成几个空格,方便以空格切分生成对应的索引个数。 

结果:

 

参考:

【Hive】生成动态日期序列

示例2:

 

 

SELECT
  single_id,
  single_time
FROM tempTable
 lateral view posexplode(split(id,',')) as single_id_index,single_id
 lateral view posexplode(split(time,',')) as single_time_index,single_time
WHERE
  single_id_index=single_time_index

 

spark两种实现方式:

需求:

 

 实现:

 

 

 

参考:

[Hive] 两个‘不常用’的函数posexplode和lag

 

posted on 2020-12-11 18:46  RICH-ATONE  阅读(9074)  评论(0编辑  收藏  举报

导航