Firebase到BigQuery:活动用户计数不匹配

Firebase到BigQuery:活动用户计数不匹配,firebase,google-bigquery,firebase-analytics,active-users,Firebase,Google Bigquery,Firebase Analytics,Active Users,我正在将数据从Firebase导出到BigQuery,但Firebase中显示的数字与我在BigQuery中手动提取的数字不同,当我使用用户参与事件统计(不同)用户时 在Firebase中,我定义了“所有用户”受众。 在“相对受众”仪表板中的“活动图”(显示每天的活动用户数与上月相比)中,我看到4月1日我有388.597个用户 我有一个从Firebase到BigQuery的标准实时提取,它集成了事件数据,我想在这里找到相同的数字 这是我在BigQuery中使用的查询 SELECT PARSE

我正在将数据从Firebase导出到BigQuery,但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个

我在这里发现,这可能是由于时区设置。我的项目设置为GMT+1,而BigQuery使用UTC命名表。然而,在我的查询中,我已经按事件日期分组了。 平心而论,我每天都在比较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_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

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

我相信答案隐藏在Firebase文档中的这句话后面:“……日期范围的活动用户,包括以前日期范围的百分比波动。”(参见此处的参考资料)。这意味着Firebase首先会像您一样统计活动用户,然后根据前几天用户的波动情况添加一些数字。

这里也有同样的问题。user_pseudo_id似乎对活动用户进行了大量的计算。我想知道使用Firebase计算DAU的正确字段是什么。这句话的意思是,它们在仪表板上显示了活跃用户增加或减少的百分比。在我这方面,仅使用用户参与的BigQuery计算的MAU与Firebase上的MAU之间的差异显著(20%),唯一接近的方法是包含来自所有其他事件的唯一伪ID,这没有意义。