Firebase BigQuery 服务器偏移时间

Dan*_*son 8 firebase google-bigquery firebase-analytics

背景: 我正在将 Firebase 分析数据导出到 BigQuery。我正在使用 cron 作业来处理 BigQuery 中的数据以获得洞察力。

问题: 为了能够只处理增量数据,即自上次运行我的 cron 作业以来已经到达的数据,我需要一种方法来确定数据到达服务器的时间,因为event_timestamp是在客户端生成的并且可以发送前缓存在客户端。

见解: 我研究过event_server_timestamp_offset (offset),我认为我可以将它与event_timestamp一起使用。但我预计偏移量只会是正数,但也可能是负数。当我查看整个导出的 Firebase 分析数据集中偏移量的 MAX 和 MIN 并将其重新计算为年而不是微秒时,我可以获得超过 18 年的偏移量。

询问:

SELECT
  MAX(event_server_timestamp_offset)/(1000000*60*60*24) max_days, 
  MIN(event_server_timestamp_offset)/(1000000*60*60*24) min_days
FROM
  `analytics_<project_id>.events_*`
Run Code Online (Sandbox Code Playgroud)

结果:max_days=6784.485790436655,min_days=-106.95833052104166

题:

  • 如何计算 Firebase 导出的 BigQuery 数据的服务器到达时间,以便我可以运行仅处理增量数据的 cron 作业?
  • 我可以将event_server_timestamp_offsetevent_timestamp一起使用吗?如果是这样,如何?

最好的问候,丹尼尔

Dar*_*lar 10

令人惊讶的是,这个问题将近 2 年没有明确的答案,我将在这里留下我从 Firebase 支持团队获得的答案。格式是 - 提出问题,然后是支持人员的回答。

一季度。event_date - 记录事件的日期(应用程序注册时区中的 YYYYMMDD 格式)。这是否意味着事件发生在那个日期,或者它实际上是在那个日期收集的?

A1. 根据文档, event_date 是指记录/发生事件的日期。请注意, event_date 基于 Firebase 项目的 Analytics 时区设置。

Q2。event_timestamp - 在客户端上记录事件的时间(以微秒为单位,UTC)。假设这是在客户端(当然在应用程序时区)发生的事件的确切时间戳是否安全?

A2。是的,这基于设备时区设置。但是,如果设备时间不正确,则 event_timestamp 可能会出现偏差。

Q3。event_server_timestamp_offset - 收集时间和上传时间之间的时间戳偏移量(以微为单位)。这是导致所有误解的主要字段 - 在我们 2020 年的 BigQuery 表中,该字段的值范围在 5 天到 -2 天之间。我的意思是收集时间怎么能提前 2 天?

A3. 导出模式中的 event_server_timestamp_offset 字段是事件发生与应用将其上传到我们的服务器之间的时间差。换句话说,根据我们的服务器,这是客户端本地时间与实际时间之间的估计差异。此字段的值通常为正,但如果设备时间设置不正确,也可能为负。

第 4 季度。最后一个问题非常重要 - 我们可以忽略 event_server_timestamp_offset 字段而只依赖 event_timestamp - 作为事件在客户端发生的确切日期和时间(未收集,未上传等)。如果不是 - 请解释我们如何获得客户端发生的事件的确切日期时间。但如果是,请告诉我为什么我们需要 event_server_timestamp_offset 字段?

A4. 是的,您实际上可能会忽略它并单独使用 event_timestamp。但是,如前所述,如果设备时间设置不正确,则 event_timestamp 可能会关闭,但它不应真正影响分析数据的整体情况,因为此类情况通常是一次性的。


Jie*_*Jie -1

我们使用 event_date 作为指标,每天加载一次数据。