hive中datediff函数介绍

目录

基本介绍

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

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

sql 复制代码
DATEDIFF(enddate, startdate)

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

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

sql 复制代码
SELECT DATEDIFF('2022-01-10', '2022-01-01');

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

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

实战

求用户的日活,2日留存,3日留存,7日留存指标

具体实现:

sql 复制代码
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
	,day
from  
(
selet 
	imei 
	,max(is_valid_act) as is_valid_act
	,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
	,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
	,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
	,day
from  
 (select  
	day
	,imei 
	,max(is_valid_act) as is_valid_act
 from imei_vaild_table_test
 where day in ('${etl_date}','${etl_date_2}','${etl_date_3}','${etl_date_7}')
 group by 
 day ,imei
 ) t1 
 left join 
  (select  
	day
	,imei 
	,max(is_valid_act) as is_valid_act
 from imei_vaild_table_test
 where day in ('${etl_date}')
 group by day,imei
 ) t2 
 group by 	day,imei 
 
 
 union all 
 
 select  
	imei 
	,is_valid_act
	,retain_day_2_act
	,retain_day_3_act
	,retain_day_7_act
	,day 
 from  imei_retain_table_test
 where day in ('${etl_date}','${etl_date_2}','${etl_date_3}','${etl_date_7}')
 ) tt
group by 
	imei 
	,day
相关推荐
注塑机数据采集联网1 小时前
数据采集网关入门:ZK-D1/D3从零开始构建你的数据运用
大数据·数据仓库·人工智能·物联网·数据库架构·注塑机网关
测试盐6 小时前
spark作业日志定位过程
java·hadoop·spark
roman_日积跬步-终至千里7 小时前
【数据建模入门】从一家小店看懂数仓与机器学习:先理业务,再串技术
数据仓库·人工智能·机器学习·数据分析·数据建模
步行cgn7 小时前
为什么既要 web.xml 又要 springmvc.xml?能不能只配一个?
xml·前端·hive
程序员梅雨1 天前
【从零开始学习数据仓库 | 第二篇】: 拉链表 & 数仓分层
大数据·数据仓库·学习
NiceZack1 天前
Hadoop 部署全流程教程:从新装 CentOS 到伪分布式与完全分布式
hadoop·分布式·centos
roman_日积跬步-终至千里1 天前
数仓开发的三层责任:业务定义、模型设计与 SQL 实现
数据库·数据仓库·sql·数据建模
@小匠1 天前
Flink + Iceberg 批量失败复盘:一次超时如何变成 Hive Metastore 锁泄漏
大数据·hive·flink
geovindu2 天前
SQL Data Sampling and Approximation Techniques using postgreSQL 18
大数据·数据库·数据仓库·sql·postgresql·数据库开发·数据库架构
skywalk81632 天前
hive —— 多机 AI Agent 协同的任务总线:分布式,多节点同时运行,保障不会宕机
人工智能·hive·分布式