簡體   English   中英

Hive UDF,日期遞增

[英]Hive UDF with date incrementing

我正在嘗試編寫一個用戶定義的函數,該函數將允許您輸入日期(當前日期)和范圍,並且查詢將返回以下日期以及已過的日期。 例如,如果給定current_date,則查詢將返回current_date-0天,next_day-1天。 我一直在嘗試不同的日期類型(unixtimestamp,日期,jodatime,localdatetime)。 我取消了以前的代碼,實際上只是希望對問題有所了解,並減少代碼量。

您可以使用純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  

希望你有主意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM