0


hive中datediff函数介绍

目录

基本介绍

在 Apache Hive 中,datediff 函数用于计算两个日期之间的天数差异。它接受两个日期作为参数,并返回这两个日期之间的天数差。

以下是 datediff 函数的一般语法:

DATEDIFF(enddate, startdate)

其中 enddate 是结束日期,startdate 是起始日期。函数将返回 enddate 减去 startdate 后的天数差。

例如,如果我们想要计算 2022 年 1 月 1 日和 2022 年 1 月 10 日之间的天数差,我们可以使用以下 Hive 查询:

SELECT DATEDIFF('2022-01-10','2022-01-01');

这将返回 9,表示这两个日期之间相隔 9 天。

总之,datediff 函数在 Hive 中是用于计算日期之间天数差异的非常有用的函数。

实战

求用户的日活,2日留存,3日留存,7日留存指标
具体实现:

insert overwrite table imei_retain_table_test pattition (day)select 
    imei 
    ,max(is_valid_act)as is_valid_act
    ,max(retain_day_2_act)as retain_day_2_act
    ,max(retain_day_3_act)as retain_day_3_act
    ,max(retain_day_7_act)as retain_day_7_act
    ,dayfrom(
selet 
    imei 
    ,max(is_valid_act)as is_valid_act
    ,max(if(datediff(t2.day- t1.day)=1and t1.is_valid_act=1and t2.is_valid_act =1,1,0)as retain_day_2_act
    ,max(if(datediff(t2.day- t1.day)=2and t1.is_valid_act=1and t2.is_valid_act =1,1,0)as retain_day_3_act
    ,max(if(datediff(t2.day- t1.day)=6and t1.is_valid_act=1and t2.is_valid_act =1,1,0)as retain_day_7_act
    ,dayfrom(selectday,imei 
    ,max(is_valid_act)as is_valid_act
 from imei_vaild_table_test
 wheredayin('${etl_date}','${etl_date_2}','${etl_date_3}','${etl_date_7}')groupbyday,imei
 ) t1 
 leftjoin(selectday,imei 
    ,max(is_valid_act)as is_valid_act
 from imei_vaild_table_test
 wheredayin('${etl_date}')groupbyday,imei
 ) t2 
 groupbyday,imei 
 
 
 unionallselect  
    imei 
    ,is_valid_act
    ,retain_day_2_act
    ,retain_day_3_act
    ,retain_day_7_act
    ,dayfrom  imei_retain_table_test
 wheredayin('${etl_date}','${etl_date_2}','${etl_date_3}','${etl_date_7}')) tt
groupby 
    imei 
    ,day

本文转载自: https://blog.csdn.net/weixin_43597208/article/details/141720401
版权归原作者 浊酒南街 所有, 如有侵权,请联系我们删除。

“hive中datediff函数介绍”的评论:

还没有评论