日期递增的 Hive UDF

Posted

技术标签:

【中文标题】日期递增的 Hive UDF【英文标题】:Hive UDF with date incrementing 【发布时间】:2019-06-26 23:21:28 【问题描述】:

我正在尝试编写一个用户定义的函数,该函数将允许您输入日期(当前日期)和范围,查询将返回以下日期以及已过去的日期。例如,如果给定 current_date,查询将返回 current_date - 0 天,next_day - 1 天。 我一直在尝试不同的日期类型(unixtimestamp、date、jodatime、localdatetime)。我废弃了我以前的代码,我真的只是希望对这个问题有所了解并减少代码。

【问题讨论】:

也许在这种情况下分享你的一些代码实际上可以帮助你。 LocalDate 我认为应该不会太难。在任何情况下,它都是您要使用的类。 【参考方案1】:

您可以使用纯 Hive 查询来做到这一点:

set hivevar:start_date=2019-01-02; 
set hivevar:end_date=2019-01-31;  

with date_range as 
(--this query generates date range
select date_add ('$hivevar:start_date',s.i) as dt, s.i days
  from ( select posexplode(split(space(datediff('$hivevar:end_date','$hivevar:start_date')),' ')) as (i,x) ) s
)

select dt, days from date_range; 

返回:

dt  days    
2019-01-02  0   
2019-01-03  1   
2019-01-04  2   
2019-01-05  3   
2019-01-06  4   
2019-01-07  5   
2019-01-08  6   
2019-01-09  7   
2019-01-10  8   
2019-01-11  9   
2019-01-12  10  
2019-01-13  11  
2019-01-14  12  
2019-01-15  13  
2019-01-16  14  
2019-01-17  15  
2019-01-18  16  
2019-01-19  17  
2019-01-20  18  
2019-01-21  19  
2019-01-22  20  
2019-01-23  21  
2019-01-24  22  
2019-01-25  23  
2019-01-26  24  
2019-01-27  25  
2019-01-28  26  
2019-01-29  27  
2019-01-30  28  
2019-01-31  29  

希望你明白了。

【讨论】:

这很好用,我仍然需要为我的问题配置它,但它可以满足需要。非常感谢您的帮助。

以上是关于日期递增的 Hive UDF的主要内容,如果未能解决你的问题,请参考以下文章

Hive函数

Hive函数

Hive - 选择另一个字段的值在连续时间戳中递增的 id

EXCEL里如何生成一个日期时间递增序列

UDF 在 Hive 中转换日期格式

递增日期 - SQL(雪花)