文章目录

什么是用户留存率?创建数据源计算留存率计算 N 日的留存率

什么是用户留存率?

用户留存率是指在特定时间段内,用户在使用某个产品或应用程序后,再次使用该产品或应用程序的比例。

它可以帮助公司了解用户是否喜欢他们的产品,并提供有价值的信息,用于改进产品和增加用户满意度。例如,如果有 100 名用户在第一次使用某个应用程序后,有 80 名用户再次使用该应用程序,那么这个应用程序的用户留存率就是 80%。

创建数据源

drop table userinfo;

-- 记录用户的注册日期。

create table userinfo (

id int,

registerDate timestamp);

drop table log;

-- 记录用户后续使用产品的日期。

create table log (

id int,

logDate timestamp);

insert into userinfo values

(1,"2022-12-01 12:22:35"),

(2,"2022-12-01 12:22:35" ),

(3,"2022-12-03 12:22:35" ),

(4,"2022-12-03 12:22:35" ),

(5,"2022-12-02 12:22:35" ),

(5,"2022-12-02 12:22:35" ),

(7,"2022-12-03 12:22:35" ),

(8,"2022-12-03 12:22:35" ),

(9,"2022-12-03 12:22:35" ),

(10,"2022-12-01 12:22:35");

insert into log values

(1,"2022-12-02 20:21:40"),

(1,"2022-12-02 22:21:40"),

(1,"2022-12-02 22:21:40"),

(2,"2022-12-02 12:30:35"),

(3,"2022-12-04 12:22:35"),

(4,"2022-12-04 12:22:35"),

(5,"2022-12-04 12:22:35"),

(5,"2022-12-02 12:22:35"),

(7,"2022-12-05 12:22:35"),

(8,"2022-12-06 12:22:35"),

(9,"2022-12-07 12:22:35"),

(10,"2022-12-03 12:22:35");

计算留存率

我在 Hive 中创建了如下两张表:

用户表 userinfo:

日志表 log:

次日留存率计算:

SELECT date(u.registerDate) registerDate,

count(distinct l.id) / count(distinct u.id) leave_percent

FROM userinfo u

LEFT JOIN log l

ON u.id = l.id

and

date(l.logDate) = date_add(date(u.registerDate),1)

GROUP BY date(u.registerDate);

计算结果:

思路:

首先我们根据主键对用户表和日志表进行左连接,再加上连接条件 date(l.logDate) = date_add(date(u.registerDate),1) 进行过滤,根据注册日期进行分组统计。注意对 id 进行去重,利用左连接的特性,来完成计算。count 并不会统计 null 值。

可以看到 2022-12-01 的次日留存率为 66%,2022-12-02 的次日留存率为 0%,2022-12-03 的次日留存率为 40%。

验证:

从用户表中可以看到在 2022-12-01 日一共注册了 3 名用户(1,2,10)。

在日志表中 ,2022-12-02 日只出现了两名老用户(1,2)。显然,在次日留存率计算中,我们流失了一名用户(10)。所以,2022-12-01 的次日留存率为 2/3,66%

计算 N 日的留存率

只需要修改连接条件 date(l.logDate) = date_add(date(u.registerDate),1) 即可。

如:date(l.logDate) = date_add(date(u.registerDate),N)。

参考文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: