4

我正在将数据从 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

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

4

1 回答 1

0

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

于 2020-06-30T07:19:34.950 回答