背景:我正在将 Firebase 分析数据导出到 BigQuery。我正在使用 cron 作业来处理 BigQuery 中的数据以获得洞察力。
Problem:为了能够只处理增量数据,即自上次运行 cron 作业以来到达的数据,我需要一种方法来计算数据到达服务器的时间,因为事件时间戳在客户端生成,并且可以在发送之前缓存在客户端。
见解:我曾与event_server_timestamp_offset(偏移量)我认为我可以与事件时间戳。但我预计偏移量只会是正数,但也可能是负数。当我查看整个导出的 Firebase 分析数据集中的偏移量的 MAX 和 MIN 并将其重新计算为年而不是微秒时,我可以获得超过 18 年的偏移量。
Query:
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_*`
结果:max_days=6784.485790436655,
min_days=-106.95833052104166
问题:
- 如何确定 Firebase 导出的 BigQuery 数据的服务器到达时间,以便我可以运行仅处理增量数据的 cron 作业?
- 我可以用吗event_server_timestamp_offset和...一起事件时间戳?如果是这样,怎么办?
此致,
丹尼尔
令人惊讶的是,这个问题近两年来都没有明确的答案,我在这里留下从 Firebase 支持团队得到的答案。格式是 - 提出问题,然后由支持人员回答。
Q1. 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 字段是事件发生与应用程序将其上传到我们的服务器之间的时间差。换句话说,这是根据我们的服务器估计的客户端本地时间与实际时间之间的差异。该字段的值通常为正值,但如果设备时间设置不正确,也可能为负值。
Q4。最后一个问题非常重要——我们可以忽略
event_server_timestamp_offset 字段并仅依赖于 event_timestamp -
作为客户端发生事件的确切日期和时间(而不是
收集,未上传等)。如果没有 - 请解释我们如何获得
客户端发生事件的确切日期时间。但如果是的话
请让我知道为什么我们需要 event_server_timestamp_offset 字段?
A4。是的,您实际上可以忽略它并单独使用 event_timestamp 。然而,如前所述,如果设备时间设置不正确,event_timestamp 可能会关闭,但它不会真正影响分析数据的整体情况,因为这样的情况通常是一次性的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)