我正在将数据从 Firebase 导出到 BigQuery,但是当我使用 USER_ENGAGEMENT 事件对用户进行 COUNT(DISTINCT) 时,Firebase 中显示的数据与我在 BigQuery 中手动提取的数据不同。
在 Firebase 中,我定义了“所有用户”受众。在相关的受众仪表板中,活动图表(显示每天与上个月的活跃用户)我看到 4 月 1 日我有 388.597 个用户。
我有一个从 Firebase 到 BigQuery 的标准实时提取,它集成了事件数据,我想在这里找到相同的数字。
这是我在 BigQuery 中使用的查询
SELECT
PARSE_DATE('%Y%m%d', event_date) AS Date
, COUNT(DISTINCT user_pseudo_id ) AS Active_Users
FROM
`xxxx.analytics_162988291.events_*`
WHERE FORMAT_DATE('%Y-%m', PARSE_DATE('%Y%m%d', event_date)) = FORMAT_DATE('%Y-%m', DATE_ADD(CURRENT_DATE(), INTERVAL -EXTRACT(DAY FROM CURRENT_DATE()) DAY))
and event_name = 'user_engagement'
GROUP BY Date
ORDER BY Date;
4 月 1 日,BigQuery 返回 391394 个不同的用户,比 Firebase 多 2797 个。
我在这里发现Firebase vs BigQuery Active Users Discrepancies这可能是由于时区设置造成的。我的项目设置为 GMT+1,而 BigQuery 使用 UTC 命名表。但是在我的查询中,我已经按 EVENT_DATE 分组。可以肯定的是,无论如何,我还是每天比较了 4 月份的 2 个数字。以下是数字:
Firebase BigQuery Difference
388 597 391 394 -2 797
378 393 374 023 4 370
372 890 374 601 -1 711
364 520 366 367 -1 847
375 903 374 479 1 424
453 630 452 077 1 553
476 413 476 401 12
398 481 396 227 2 254
378 338 375 531 2 807
368 699 369 699 -1 000
363 063 363 436 -373
369 874 368 441 1 433
460 472 454 647 5 825
481 832 487 214 -5 382
395 781 392 564 3 217
370 940 366 189 4 751
122 434 122 549 -115
342 249 344 086 -1 837
371 934 367 609 4 325
391 817 391 765 52
390 550 391 367 -817
412 276 408 876 3 400
377 219 379 659 -2 440
370 611 366 901 3 710
367 272 365 267 2 005
365 307 369 399 -4 092
438 676 439 990 -1 314
471 515 471 363 152
392 256 395 532 -3 276
369 500 368 416 1 084
Total
11 581 442 11 566 069 15 373
如果是时区问题,我会争辩说,总差异不应该与其他任何一天相差太大,但差异反而更显着。
另外,由于我使用的是 StandardSQL,所以 COUNT(DISTINCT) 应该是准确的。
在这一点上,我怀疑 Firebase 将“用户活动”定义为不同的东西,但我不明白如何。
帮助!
编辑
通过阅读Firebase -> BigQuery how to get active users for that month, week, day我开始注意到人们使用的分组字段与我使用的分组字段不同(user_pseudo_id),但它看起来不像我的表 events_* 有其他app_info.* 字段比
app_info.id STRING
app_info.version STRING
app_info.install_store STRING
app_info.firebase_app_id STRING
app_info.install_source STRING
这可能只是一个分组问题吗?