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 秒后测量的,您可以更改。尝试将会话开始时间计数更改为尽可能少的数字,然后您可能会得到一个更接近您预期的数字。
根据 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 秒后测量的,您可以更改。尝试将会话开始时间计数更改为尽可能少的数字,然后您可能会得到一个更接近您预期的数字。