Hive 计算新用户留存

使用hive计算用户留存率。

问题描述:留存率是一个常见的数据分析需求,即某日新增用户,计算这些用户在后5天内的获取数。

使用到的hive函数:

datediff:返回两个日期相差的天数,日期格式为 yyyy-MM-dd

unix_timestamp:将指定格式的字符串类型日期转换成时间戳

from_unixtime:将时间戳转换成指定格式的字符串日期

参数博客:https://blog.csdn.net/chenpe32cp/article/details/85068184

代码实现:

select 
   dt,
   count(1) as total_new_user,
   sum(rank_1) as rank_1,
   sum(rank_2) as rank_2,
   sum(rank_3) as rank_3,
   sum(rank_4) as rank_4,
   sum(rank_5) as rank_5
from 
   (select 
      a.device_id,
      a.dt,
      if(datediff(b.dt,a.dt)=1,1,0) as rank_1,
      if(datediff(b.dt,a.dt)=2,1,0) as rank_2,
      if(datediff(b.dt,a.dt)=3,1,0) as rank_3,
      if(datediff(b.dt,a.dt)=4,1,0) as rank_4,
      if(datediff(b.dt,a.dt)=5,1,0) as rank_5
   from 
      (select device_id,from_unixtime(unix_timestamp(dt, 'yyyyMMdd'), 'yyyy-MM-dd') as dt from new_user_table where dt>='20200801' and dt<='20200805' and is_new_user='1') a --新增用户
   left join
      (select device_id,from_unixtime(unix_timestamp(dt, 'yyyyMMdd'), 'yyyy-MM-dd') as dt from active_user_table where dt>='20200802' and dt<='20200810' and is_day_active='1') b --每日活跃用户
   on a.device_id=b.device_id) a
group by dt order by dt;

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值