Firebase如何查看应用的逐月用户留存率?
Firebase/GA4 按月维度统计用户留存率实现方案
Firebase和GA原生仅支持天/周维度的留存数据展示,要实现按月维度的留存统计和同款周留存的同期群展示样式,可通过以下两种方式实现:
方案1:GA4探索报告自定义配置(无代码快速实现)
- 进入GA4后台,打开左侧「探索」模块,新建空白探索
- 维度栏添加「首次访问月份」、「事件月份」两个维度,指标栏添加「活跃用户数」指标
- 表格配置区:将「首次访问月份」拖动到行,「事件月份」拖动到列,「活跃用户数」拖动到值
- 手动计算留存:每行对应一个新用户的首访月份分组(即同期群),每列对应后续的月份,用对应单元格的活跃用户数 ÷ 首访月份的总新增用户数,即可得到对应第N个月的留存率,最终呈现样式和周留存完全一致
方案2:BigQuery导出数据计算(灵活度最高,支持自定义逻辑)
- 前提:已完成GA4/Firebase与BigQuery的关联,同步了全量事件数据
- 核心逻辑是构建同期群(Cohort)分析模型,给每个用户标记首访月份,再统计每个用户后续各月的活跃情况,最终聚合计算留存比例,参考SQL代码片段如下:
WITH -- 标记每个用户的首次访问月份 user_cohort AS ( SELECT user_pseudo_id, DATE_TRUNC(PARSE_DATE("%Y%m%d", event_date), MONTH) AS first_month FROM `your_project.analytics_xxxxxx.events_*` WHERE event_name = 'first_open' GROUP BY 1,2 ), -- 统计每个用户的活跃月份 user_activity AS ( SELECT user_pseudo_id, DATE_TRUNC(PARSE_DATE("%Y%m%d", event_date), MONTH) AS active_month FROM `your_project.analytics_xxxxxx.events_*` WHERE event_name = 'session_start' GROUP BY 1,2 ), -- 统计每个首访月份的总新增用户数 cohort_total AS ( SELECT first_month, COUNT(DISTINCT user_pseudo_id) AS total_users FROM user_cohort GROUP BY 1 ) SELECT c.first_month, DATE_DIFF(a.active_month, c.first_month, MONTH) AS months_after_register, COUNT(DISTINCT a.user_pseudo_id) AS retained_users, ROUND(COUNT(DISTINCT a.user_pseudo_id) / t.total_users, 4) AS retention_rate FROM user_cohort c LEFT JOIN user_activity a ON c.user_pseudo_id = a.user_pseudo_id LEFT JOIN cohort_total t ON c.first_month = t.first_month WHERE DATE_DIFF(a.active_month, c.first_month, MONTH) >= 0 GROUP BY 1,2,t.total_users ORDER BY 1,2
- 导出SQL执行结果后,可直接在Excel/BI工具中透视生成月留存同期群表格,匹配你需要的周留存展示样式。
注意:上述逻辑统计的是自然月留存,如果需要计算滚动30天留存(即用户首访后满30/60/90天的留存情况),将SQL中月份差值的计算逻辑调整为按天差值取整除以30即可,两种统计口径结果存在差异,可按需选择。
内容的提问来源于stack exchange,提问作者luc
相关产品推荐
相关产品推荐

