根据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
将始终返回app_instance_id
,以防有人提出可能是问题
答案 0 :(得分:3)
您需要等待整整3天才能上传离线设备的数据。您的查询会根据事件时间戳正确过滤事件,并从3天开始提取数据,但这只是今天的一天半,这足以使所有数据上传。尝试从昨天开始的3天。
还尝试使用user_engagement事件而不是session_start。我认为活跃用户数基于user_engagement而不是session_start事件。
此外,FB报告需要一些处理,因此您可能希望并在第二天检查FB报告。
FB报告在帐户的时区上完成,事件以UTC为时间戳,因此FB报告中的日期与UTC日历日不同。您希望控制该差异以获得匹配的数字。
答案 1 :(得分:1)
Sessions are by-default measured after user activity of 10 seconds in the respective app which you can change. Try changing the sessions start time count to the least number possible and then you may arrive at a number closer to what you are expecting.
答案 2 :(得分:0)
对于我使用的Android统计信息:
user_dim.device_info.resettable_device_id
而不是
user_dim.app_info.app_instance_id
它产生了更好的结果。