hive中datediff函数介绍

打印 上一主题 下一主题

主题 803|帖子 803|积分 2409

根本介绍

在 Apache Hive 中,datediff 函数用于计算两个日期之间的天数差异。它接受两个日期作为参数,并返回这两个日期之间的天数差。
以下是 datediff 函数的一样平常语法:
  1. DATEDIFF(enddate, startdate)
复制代码
其中 enddate 是竣事日期,startdate 是起始日期。函数将返回 enddate 减去 startdate 后的天数差。
例如,如果我们想要计算 2022 年 1 月 1 日和 2022 年 1 月 10 日之间的天数差,我们可以使用以下 Hive 查询:
  1. SELECT DATEDIFF('2022-01-10', '2022-01-01');
复制代码
这将返回 9,表示这两个日期之间相隔 9 天。
总之,datediff 函数在 Hive 中是用于计算日期之间天数差异的非常有效的函数。
实战

求用户的日活,2日留存,3日留存,7日留存指标
详细实现:
  1. insert overwrite table imei_retain_table_test pattition (day)
  2. select
  3.         imei
  4.         ,max(is_valid_act) as is_valid_act
  5.         ,max(retain_day_2_act) as retain_day_2_act
  6.         ,max(retain_day_3_act) as retain_day_3_act
  7.         ,max(retain_day_7_act) as retain_day_7_act
  8.         ,day
  9. from  
  10. (
  11. selet
  12.         imei
  13.         ,max(is_valid_act) as is_valid_act
  14.         ,max(if(datediff(t2.day - t1.day)=1 and t1.is_valid_act=1 and t2.is_valid_act =1,1,0) as retain_day_2_act
  15.         ,max(if(datediff(t2.day - t1.day)=2 and t1.is_valid_act=1 and t2.is_valid_act =1,1,0) as retain_day_3_act
  16.         ,max(if(datediff(t2.day - t1.day)=6 and t1.is_valid_act=1 and t2.is_valid_act =1,1,0) as retain_day_7_act
  17.         ,day
  18. from  
  19. (select  
  20.         day
  21.         ,imei
  22.         ,max(is_valid_act) as is_valid_act
  23. from imei_vaild_table_test
  24. where day in ('${etl_date}','${etl_date_2}','${etl_date_3}','${etl_date_7}')
  25. group by
  26. day ,imei
  27. ) t1
  28. left join
  29.   (select  
  30.         day
  31.         ,imei
  32.         ,max(is_valid_act) as is_valid_act
  33. from imei_vaild_table_test
  34. where day in ('${etl_date}')
  35. group by day,imei
  36. ) t2
  37. group by         day,imei
  38. union all
  39. select  
  40.         imei
  41.         ,is_valid_act
  42.         ,retain_day_2_act
  43.         ,retain_day_3_act
  44.         ,retain_day_7_act
  45.         ,day
  46. from  imei_retain_table_test
  47. where day in ('${etl_date}','${etl_date_2}','${etl_date_3}','${etl_date_7}')
  48. ) tt
  49. group by
  50.         imei
  51.         ,day
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天津储鑫盛钢材现货供应商

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表