Firebase Analytics 仪表板和 BigQuery 导出之间 "active users metric" 的差异

Discrepancies on "active users metric" between Firebase Analytics dashboard and BigQuery export

根据 Firebase Analytics 文档 (https://support.google.com/firebase/answer/6317517#active-users),活跃用户数是在给定日期启动会话的唯一用户数。同样根据文档,每次启动会话时都会发送一个名称为 session_start 的事件。我正在尝试使用 BigQuery 的导出来获取该指标,但我的查询给出了不同的结果(BigQuery 上为 15636,FB 分析上为 14908)

我也试过转换到不同的时区,看看是否可能是问题所在,但无论我尝试哪个时区,我都不会得到相同(或相似)的结果

哪个查询应该运行 获得与在 Firebase Analytics 仪表板上为活跃用户获得的相同结果?

我的查询是

SELECT EXACT_COUNT_DISTINCT(user_dim.app_info.app_instance_id)
FROM table_date_range([XXXXX.app_events_], timestamp('2016-11-26'), timestamp('2016-11-29')) 
WHERE DATE(event_dim.timestamp_micros) = '2016-11-27' 
AND  event_dim.name ='session_start'  

谢谢

更新

@djabi 的回答后,我将查询更改为使用 user_engagement 而不是 session_start,现在效果好多了。不过仍然存在一些细微差异(根据日期,16K 中的差异从不到 10 个到不到 50 个不等)。

我再次尝试通过 DATE(date_add(event_dim.timestamp_micros,1,'hour')) 使用不同的时区,但我从来没有得到我在 Firebase Analytics 仪表板上得到的确切数字。

新数字足以被认为在统计上是可以接受的,但想知道是否有人有建议来改进查询并获得准确的结果?

当前查询是:

SELECT
  COUNT(*) AS active_users
FROM (
  SELECT
    COALESCE(user_dim.user_id, user_dim.app_info.app_instance_id) AS user_id
  FROM
    TABLE_DATE_RANGE([XXXXX.app_events_], TIMESTAMP('2016-11-24'), TIMESTAMP('2016-11-29'))
  WHERE
    DATE(event_dim.timestamp_micros) = '2016-11-25'
    AND event_dim.name ='user_engagement'
  GROUP BY
    user_id )

注意:目前我们不发送 user_id,因此 COALESCE 将始终 return app_instance_id,以防有人建议可以成为问题

您需要等待整整 3 天才能上传离线设备的数据。您的查询根据事件时间戳正确地过滤了事件,并且您从 3 天开始提取数据,但这仅是今天的一天半,足以上传所有数据。尝试包括从昨天算起的 3 天。

也尝试使用 user_engagement 事件而不是 session_start。我认为活跃用户数是基于 user_engagement 而不是 session_start 事件。

FB 报告也需要一点时间来处理,因此您希望第二天查看 FB 报告。

FB 报告是根据帐户的时区完成的,事件的时间戳是 UTC,因此 FB 报告中的日期不同于 UTC 日历日。您还想控制这种差异以获得匹配的数字。

对于 Android 我使用的统计数据:

user_dim.device_info.resettable_device_id

而不是

user_dim.app_info.app_instance_id

而且效果更好。

默认情况下,会话是在用户 activity 在相应应用中停留 10 秒后测量的,您可以更改。尝试将会话开始时间计数更改为尽可能少的数字,然后您可能会得到一个更接近您预期的数字。