Firebase 到 BigQuery:活跃用户数不匹配

Firebase to BigQuery : active users count does not match

我正在将数据从 Firebase 导出到 BigQuery,但当我计算 USER_ENGAGEMENT 事件的用户时,Firebase 中显示的数据与我在 BigQuery 中手动提取的数据不同。

在 Firebase 中,我定义了一个 "All users" 受众。 在相关的受众仪表板中,Activity 图表(逐日显示活跃用户与上个月相比)我看到在 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 returns 391394 个独立用户,比 Firebase 多 2797 个。

我在这里 Firebase vs BigQuery Active Users Discrepancies 发现这可能是由于时区设置造成的。我的项目设置为 GMT+1,而 BigQuery 使用 UTC 来命名 tables。但是在我的查询中,我已经按 EVENT_DATE 分组了。 可以肯定的是,我还是逐日比较了 4 月份的两个数字。这是数字:

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 将 "User Activity" 定义为不同的东西,但我不明白是如何定义的。

求助!

编辑

通过阅读 我开始注意到人们如何使用与我使用的不同的分组字段 (user_pseudo_id),但是它看起来不像我的 table 事件_*除了

之外还有其他 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

这可能只是一个分组问题吗?

我相信答案隐藏在 Firebase 文档中的这句话后面:“...该日期范围内的活跃用户,包括上一日期范围的百分比波动。” (请参阅此处的参考 https://support.google.com/firebase/answer/6317517?authuser=0#active-users)。这意味着 Firebase 首先会像您一样准确地计算活跃用户,然后根据前几天的用户波动添加一些数字。