firebase 和 BigQuery 的保留结果不匹配

Posted

技术标签:

【中文标题】firebase 和 BigQuery 的保留结果不匹配【英文标题】:Mismatch of retention results from firebase and BigQuery 【发布时间】:2021-11-03 07:29:59 【问题描述】:

我用下面的代码计算了 BigQuery 的留存率。代码取自here。但是这段代码给了我不同的保留,然后是已经在 firebase 中计算的保留。 BigQuery 中计算的用户数总是较少。

这两种方法有什么区别?有没有办法在 BigQuery 中获得与在 Firebase 中相同的结果?

#standardSQL
####################################################################
# PART 1: Cohort of New Users starting on SEPT 1
####################################################################
WITH 
new_user_cohort AS (  
  SELECT DISTINCT user_pseudo_id as new_user_id
  FROM 
    `projectId.analytics_YOUR_TABLE.events_*`
  WHERE
   event_name = 'first_open' AND
   #geo.country = 'France' AND
   FORMAT_TIMESTAMP("%Y%m%d", TIMESTAMP_TRUNC(TIMESTAMP_MICROS(event_timestamp), DAY, "Etc/GMT+8")) = '20180901' AND
  _TABLE_SUFFIX BETWEEN '20180830' AND '20180902'),
num_new_users AS (
  SELECT count(*) as num_users_in_cohort  FROM new_user_cohort
),

####################################################################
# PART 2: Engaged users from Sept 1 cohort
####################################################################
engaged_user_by_day AS (  
  SELECT 
    FORMAT_TIMESTAMP('%Y%m%d', TIMESTAMP_TRUNC(TIMESTAMP_MICROS(event_timestamp), DAY, "Etc/GMT+8")) as event_day, COUNT (DISTINCT user_pseudo_id) as num_engaged_users
  FROM 
    `projectId.analytics_YOUR_TABLE.events_*` INNER JOIN new_user_cohort on new_user_id = user_pseudo_id 
  WHERE
    event_name = 'user_engagement' AND
    _TABLE_SUFFIX BETWEEN '20180830' AND '20180907'
  GROUP BY (event_day)
)

####################################################################
# PART 3: Daily Retention = [Engaged Users / Total Users]
####################################################################
SELECT event_day, num_engaged_users, num_users_in_cohort, ROUND((num_engaged_users / num_users_in_cohort), 3) as retention_rate
  FROM engaged_user_by_day CROSS JOIN num_new_users
ORDER BY (event_day)

【问题讨论】:

“总是更小”是什么意思?你能添加一些同时期的示例结果吗? 我从 2021 年 9 月 21 日开始。在使用上述代码的大查询中,我得到第 0 天保留 1453 个用户,第 1 天保留 662 和第 2 天保留 441。同时,如果同一天的 Firebase Analytics 我得到第 0 天保留 1481,第 1 天保留 680 和第 2 天保留 452。总是更小我的意思是即使我检查另一个日期,BigQuery 中的用户数也会比 FireBase 中的小 更令人沮丧的是,我去了 Google Analytics(分析)并尝试复制它并得到了第三个不同的结果。 我可以看到代码确实考虑了确切的时区。你确定它们都在同一个时区工作吗? 我不是 100% 确定,但我不认为时区是问题所在。我还测试了多个时区,但我从来没有匹配过 【参考方案1】:

我发现该分析正在使用 sampling,而在我的分析报告中,它只使用了 0.2% 的数据。

在 firebase 中,我注意到他们删除了保留标签(至少在我的情况下)。但我认为也使用了采样。

【讨论】:

以上是关于firebase 和 BigQuery 的保留结果不匹配的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Firebase 中的某些用户事件过滤 BigQuery 中的保留计算

在 BigQuery 中恢复过期的 Firebase 表并将数据保存时间超过 60 天

Firebase BigQuery 活动用户和界面差异

通过 BigQuery 访问 Firebase 封闭漏斗中的结构和数组

在 bigquery 上合并 firebase 事件

BigQuery 和 Firebase - 如何确定每周增长