留存和流失指标

2021-11-25 20:55:20 浏览数 (1)

一.背景和意义

关注产品对应用户的黏性,评判APP初期能否留下用户,以及活跃用户规模增长的情况,尤其在在AARRR模型,留存被单独说明为一个用户运营数据指标。

但是在APP中期和后期,更关心产品的用户稳定性,收益转化,所以流失指标更能反应产品的生命周期处于那个阶段。也有助于活跃用户生命周期分析,以及渠道质量变化情况。

二.数据和指标计算

1.数据来源

1.1 数据库表:用户表/登录表(用户注册时间,最近登录时间,登录地点)

1.2 用户埋点数据:考虑到有些产品,尤其是海外产品是非登录状态可用,所以采用埋点上报数据。

2.留存指标

2.1 留存用户,留存率

衍生指标:次日留存率(Day 1Retention Ratio)

定义:指定日期使用(登录)的用户 在 隔天(指定日期 1)后继续使用(登录) 用户的比例。

类似指标:3日留存率,7日留存率。

开发实现:

代码语言:javascript复制
SELECT 
   COUNT(DISTINCT CASE WHEN DATEDIFF($day, event_day) <= 0 THEN user_id  ELSE null END ) AS day_user_num,   --当日用户数
   COUNT(DISTINCT CASE WHEN DATEDIFF($day, event_day) <= 1 THEN user_id  ELSE null END ) AS 1day_user_num,  --次日留存用户数
   COUNT(DISTINCT CASE WHEN DATEDIFF($day, event_day) <= 1 THEN user_id  ELSE null END ) / COUNT(DISTINCT CASE WHEN DATEDIFF($day, event_day) <= 0 THEN user_id  ELSE null END ) as 1day_ratio, --次日留存率

   COUNT(DISTINCT CASE WHEN DATEDIFF($day, event_day) <= 2 THEN user_id  ELSE null END ) AS 3day_user_num,  --3日留存用户数
   COUNT(DISTINCT CASE WHEN DATEDIFF($day, event_day) <= 2 THEN user_id  ELSE null END ) / COUNT(DISTINCT CASE WHEN DATEDIFF($day, event_day) <= 0 THEN user_id  ELSE null END ) as 3day_ratio,  --3日留存率

   COUNT(DISTINCT CASE WHEN DATEDIFF($day, event_day) <= 6 THEN user_id  ELSE null END ) AS 7day_user_num, --7日留存用户数
   COUNT(DISTINCT CASE WHEN DATEDIFF($day, event_day) <= 6 THEN user_id  ELSE null END ) / COUNT(DISTINCT CASE WHEN DATEDIFF($day, event_day) <= 0 THEN user_id  ELSE null END ) as 7day_ratio  --7日留存率
FROM
   user_event 
WHERE
    DATEDIFF($day, event_day) <= 6
AND DATEDIFF($day, event_day) >= 0



---- ok的sql

SELECT 
    t_day,
    count(distinct user_id) as day_user_num,
    count(distinct case when day_interval=1 then user_id else null end) as  1day_user_num,
    count(distinct case when day_interval=1 then user_id else null end)/ count(distinct user_id) as 1day_ratio,
    count(distinct case when day_interval=3 then user_id else null end) as  3day_user_num,
    count(distinct case when day_interval=3 then user_id else null end)/ count(distinct user_id) as 3day_ratio,
    count(distinct case when day_interval=7 then user_id else null end) as  7day_user_num,
    count(distinct case when day_interval=7 then user_id else null end)/ count(distinct user_id) as 7day_ratio
FROM 
(
    SELECT 
        t.day as t_day,
        t.user_id,
        t.n_day_user_id,
        DATEDIFF(TO_DATE(t.n_day,'yyyyMMdd'), TO_DATE(t.day,'yyyyMMdd')) as day_interval
    FROM
    (
        SELECT  a.did AS user_id
                ,b.did AS n_day_user_id
                ,a.day AS day
                ,b.day AS n_day
        FROM    dwd_user_event_di AS a
        LEFT JOIN dwd_user_event_di AS b
        ON      a.did = b.did
        WHERE   
            DATEDIFF(TO_DATE(a.day,'yyyyMMdd'), TO_DATE('20211001','yyyyMMdd'))<=6 
        AND 
            DATEDIFF(TO_DATE(a.day,'yyyyMMdd'), TO_DATE('20211001','yyyyMMdd'))>=0 
    ) t
)
GROUP BY t_day
;

也可以通过行业数据或者平均留存来进行对比,例如:

基于留存率数据随着时间从高到底逐渐下降,当下降趋势平稳的时间段就是用户流失开始时间。如下图,从第5周开始留存率表现平滑,所以可以设定流失周期5周,即35天。

3.流失指标

3.1 流失用户,流失率

指标:日流失率 Day 1 Churn Ratio, 统计日登录/使用产品,随后7天没有登录/使用产品的用户 与统计日用户的占比。

周流失率 Week Chrun Ratio, 上周登录/使用产品,但本周未登录/使用过的用户占上周(使用过/活跃)用户的比例。

月流失率 Month Churn Ratio, 上月登录/使用产品,但在本月未登录/使用过的用户占上月(使用过/活跃)用户的比例。

流失通常看周流失或者月流失指标。用来

  • 活跃用户生命周期分析;
  • 渠道用户变化情况;
  • 拉动收入的运营手段,版本更新对于用户的流失影响评估;
  • 那个时间段流失较高;
  • 行业流失比较,产品生命周期也就是中期评估。

0 人点赞