定义

留存率:某日注册的用户,在之后几天是否活跃,一日留存率就是用户注册后第二天仍然活跃,以此类推,三日留存率,七日留存率。
任务:
计算所有用户注册后的一日留存率,三日留存率和七日留存率。

建表

use default;
show tables;create table register_tbl(
user_id string,
register_date string)
row format delimited fields terminated by ','
location "/HiveTestDB/retention/re"
tblproperties("skip.header.line.count"="1");create table active_tbl(
user_id string,
active_date string)
row format delimited fields terminated by ','
location "/HiveTestDB/retention/ac"
tblproperties("skip.header.line.count"="1");load data local inpath "/home/hadoop/register_tbl.csv" into table register_tbl;
load data local inpath "/home/hadoop/active_tbl.csv" into table avtive_tbl;select * from register_tbl;
select * from active_tbl;

查询

说明:register_tbl表记录了所有用户的注册日期,active_tbl是用户所有活动日期;
计算所有注册用户注册后第一天、第三天和第七天的留存率,也就是所有用户注册后第一天、第三天和第七天有登录行为的数量和比例。

步骤;

  1. register_tbl左关联active_tbl,如果要计算特定时间范围内注册用户的留存率,通过where子句过滤。
  2. 按用户和注册日期分组,计算组内活跃日期与注册日期差值分别为1,3,7的记录的个数,通过distinct实现有为1,没有为0
  3. 由此计算全部用户中留存一天、三天和七天的个数及比例
select count(*) total, sum(d1) 1d_Retent,sum(d3) 3d_Retent,sum(d7) 7d_Retent,sum(d1)/count(*) 1d_Retent_Rate,sum(d3)/count(*) 3d_Retent_Rate,sum(d7)/count(*) 7d_Retent_Rate from (select uid,rd,count(distinct if(datediff(ad,rd) = 1, 1, null)) d1,    # 也可以 if(count(datediff(ad,rd) = 1 or null)>0,1,null),避免使用distinctcount(distinct if(datediff(ad,rd) =3, 1, null)) d3,count(distinct if(datediff(ad,rd) =7, 1, null)) d7 from (select r.user_id uid,from_unixtime(unix_timestamp(r.register_date,'yyyy-MM-dd')) rd,from_unixtime(unix_timestamp(a.active_date,'yyyy-MM-dd')) ad from register_tbl r left join active_tbl a on r.user_id = a.user_id) s1 group by uid,rd ) s2

结果

最终计算结果

过渡结果

每一个用户在注册后第一天、第三天和第七天是否有过登录行为。

hive 留存率 计算相关推荐

  1. MySql 练习- 留存率计算

    MySql 练习- 留存率计算 最近开始每天抽空刷几道MySQL的题,还是要多实战练练,不然容易忘.今天分享一道MySQL里面的留存率计算 数据源:question_practice_detail i ...

  2. 一个SQL,程序实现多日留存率计算

    留存率是衡量用户质量的最重要指标之一,因此计算用户留存率是用户数据分析中必须掌握的技能之一. 留存率指标中,通常需要关注次日留存.3日留存.7日留存和月留存.对新增用户而言,需要关注更细颗粒度的数据, ...

  3. 活跃用户数怎么计算_留存率计算

    数据源:来自猴子老师的留存率分析教程 链家面试题:如何分析留存率?​mp.weixin.qq.com [面试题] 手机中的相机是深受大家喜爱的应用之一,下图是某手机厂商数据库中的用户行为信息表中部分数 ...

  4. 用SQL进行用户留存率计算

    今天我们来分享一个常见案例,用SQL来计算用户留存率. 目录: 1. 案例数据 2. 思路分析 3. 完整代码 1. 案例数据 这里我们一共两份日志数据,分别是用户账号创建的日志以及用户登录的日志. ...

  5. hive指标计算:同比

    项目场景: 通过hivesql进行指标计算 求同比: 创建hive内表 create table ccic_dev.test_yoy( yearmonth string, city string, c ...

  6. mysql 用户留存率计算(每日新增DNU,次日留存率,3日留存率,7日留存率)

    我是先学习了这位大神留存率的写法,然后我自己完善了一下.@阿柯@ 首先声明一下留存的概念 次日留存:1月1日注册的新用户,在1月2日登陆了app.即登陆日期 - 注册日期 = 1天. 3日留存:1月1 ...

  7. Hive SQL 计算指定日期本周的第一天和最后一天

    selectday,dayofweek(day) as dw1,date_add(day,1 - dayofweek(day)) as Su_s -- 周日_start,date_add(day,7 ...

  8. Hive 计算用户留存率(次日,3日,N日)

    文章目录 什么是用户留存率? 创建数据源 计算留存率 计算 N 日的留存率 什么是用户留存率? 用户留存率是指在特定时间段内,用户在使用某个产品或应用程序后,再次使用该产品或应用程序的比例. 它可以帮 ...

  9. 数据运营-常见问题 留存率/连续登陆等(SQL Hive)

    一.问题:留存率计算(SQL) 字段及表说明: 表名:user_log 字段名: log_day:登录日期 device_id:用户设备id app_id:用户app的id,其中device_id和a ...

最新文章

  1. 安装包镜像_创建 macOS Catalina cdr格式镜像安装包
  2. 洛谷P4413 R2
  3. c rsa java私钥_RSA,JAVA私钥加密,C#公钥解密
  4. Python中令人头疼的变量作用域问题,终于弄清楚了
  5. vue的列表交错过渡
  6. opencv 图像属性
  7. 红帽取代 Oracle,接管 OpenJDK 8 和 OpenJDK 11 | 极客头条
  8. htc x920e刷android7.0,HTC X920e(Butterfly)第三方recovery刷入教程
  9. C语言如何分离一个数的高低位,如何将2个字节变成一个字节
  10. python 确定字符互异
  11. 巴比特 | 元宇宙每日必读:时薪100万,「虚拟主播」的吸金能力被证实,其背后的公司IPO申请获批...
  12. 2018美团实习生招聘——K的倍数
  13. 带着孩子学数学--经验总结1:乘法怎么教,小学数学阶段等等
  14. python爬取推特图片_twitter图片视频批量下载
  15. 【GlobalMapper精品教程】027:路径剖面和和视线工具的使用
  16. C语言编程编程思维培养的重要性,谈编程思维的培养
  17. 2021年起重机司机(限桥式起重机)考试题库及起重机司机(限桥式起重机)找解析
  18. 数据结构严蔚敏代码合集 严书数据结构代码实现 可直接运行 持续更新by myself
  19. FMDB And Dao
  20. webrtc】windows 构建 :depot_tools 采坑

热门文章

  1. excel想要把两列合并且用空格隔开
  2. 垃圾回收分类系统、垃圾回收高保真原型设计 、垃圾分类后台管理系统、垃圾回收分类平台、垃圾回收分类、智慧管理系统、订单管理、财务管理、系统管理、库存管理、设备管理、Axure原型、rp原型
  3. 数据可视化实验一之单变量数据的统计图表可视化
  4. 黑苹果13.0.1驱动RTL 8125B 2.5G网卡失败故障排查
  5. taobao.user.avatar.get
  6. 条件求和:SUMIF、SUMIFS函数
  7. 顺序图-循环和分支-操作符的使用
  8. my love(新贵公子主题歌)铃声 my love(新贵公子主题歌)手机铃...
  9. 薅羊毛的机会了,点个“赚”即有机会赚取高额佣金
  10. 免费网络硬盘、FTP、大容量邮箱、电子相册合集