Firebase BigQuery 服务器偏移时间

2023-11-24

背景:我正在将 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(使用前将#替换为@)

Firebase BigQuery 服务器偏移时间 的相关文章

随机推荐

  • 使用命令和工厂设计模式来执行排队作业

    我有一个在数据库中排队的作业列表 我需要从数据库中读取这些作业并使用线程并行执行它们 并且我有一个命令类列表来执行每个作业 所有这些作业都实现了通用接口 命令模式 但是当我从数据库检索待处理的作业时 我需要为每个作业实例化正确的命令对象 如
  • 获取具有固定宽度的多行文本的高度以使对话框正确调整大小

    我想创建一个对话框 其中包含某种多行文本元素 JLabel JTextArea 等 并换行 我希望对话框具有固定宽度 但根据文本大小调整高度 我有这个代码 import static javax swing GroupLayout DEFA
  • LINQ 中的动态 where 条件

    我有一个场景 我必须在 LINQ 中使用动态 where 条件 我想要这样的东西 public void test bool flag from e in employee where e Field
  • 在 Objective-C 中创建整数属性数组

    我在 Objective C 中创建整数数组的属性时遇到问题 我不确定这是否可以在 Obj C 中做到 所以我希望有人可以帮助我找出如何正确地做到这一点或提供替代解决方案 myclass h interface myClass NSObje
  • 如何分析在生产服务器上运行的 ASP.NET 应用程序?

    我有一个 ASP NET 应用程序 在生产服务器上始终使用 75 100 的 CPU 如何分析应用程序以找出代码的哪一部分占用了最多的 CPU 我研究了几种不同的工具 Xte Profiler EQATEC dotTrace 但它们似乎都希
  • `filter(func)` 和 `filter(|x| func(x))` 有什么区别?

    有什么区别filter x func x and filter func 也许一个好的起点是了解如何filter func 可以使用类似于以下的语法来编写filter x func x 我的代码如下所示 fn filter out dupl
  • Application.Current.MainWindow.Close 与 Application.Current.Shutdown

    Should Application Current Shutdown 不作为关闭 WPF 应用程序的最佳实践吗 我有一个小型的多窗口应用程序 关闭 似乎对我的所有退出命令都很有效 但是 我被告知要始终使用Application Curre
  • 使用 Nodejs 的 Firebase 电话身份验证

    我查看了 firebase 的文档 但没有得到任何在服务器端通过电话验证用户身份的答案 我发现的只是 FIREBASEUI 或客户端身份验证 那么 我如何通过服务器端对用户进行身份验证 例如以表单形式向他们提供电话号码的输入 并在该表单上向
  • datetime_select 的值为零?

    当使用 作为 新 对象表单时 如何将选项设置为默认不选择日期而是选择 nil null 值 相关模型中的字段可以选择为空 但默认情况下 datetime select 控件没有空选项 我想你想要 f datetime select star
  • 简单的去抖动例程

    您是否有一个简单的去抖例程可以方便地处理单个开关输入 这是一个简单的裸机系统 没有任何操作系统 我想避免具有特定计数的循环构造 因为处理器速度可能会波动 我想你可以在这里学到很多东西 http www ganssle com debounc
  • 如何忽略数组解构中的某些返回值?

    当我只对索引 0 之外的数组值感兴趣时 在数组解构时是否可以避免声明无用的变量 在下文中 我想避免声明a 我只对索引 1 及以后感兴趣 How can I avoid declaring a const a b rest 1 2 3 4 5
  • 如何使用 Node.js 抓取包含动态内容的页面?

    我正在尝试刮一个website但我没有得到一些元素 因为这些元素是动态创建的 我在node js中使用cheerio 我的代码如下 var request require request var cheerio require cheeri
  • 如何在coldfusion中使用CFQuery执行2个或多个插入语句?

    是否可以使用执行 2 个插入或更新语句cfquery 如果是的话怎么办 如果不是 在 Coldfusion 中执行多个查询的最佳方法是什么 即仅打开一个到数据库的连接 我想每次我们打电话cfquery我们正在打开新的连接数据库 是否可以执行
  • Ember、Ember 数据和 MongoDB 的 _id

    我已经看到有人讨论过这个问题 但我仍然对处理 Mongo 的问题有疑问 id into id 我使用 mongoose 作为我的 ORM 虽然它有虚拟 但我似乎无法让它正常工作 以下是我的猫鼬模型中的内容 尝试从后端修复 mongoose
  • 如何在列表视图中实现OnScrollListener?

    我从服务器获取 500 条记录 我想在列表视图中显示 10 个项目 当列表视图到达末尾时我需要加载另外 10 个项目 依此类推 我在网上看到了很多例子 但我无法解决它 请帮助我 这是我的代码 public void onCreate Bun
  • C# 泛型继承和协变第 2 部分

    这是我的原始线程 C 泛型继承和协变 仅在我的只读界面上 我希望继承起作用 public delegate Boolean EnumerateItemsDelegate
  • 包包含同名的对象和包

    我在使用 Maven 或 Eclipse 编译一些 Scala 时遇到问题 我尝试从包含命名空间和同名类的 Java jar 导入一个类 我可以编译scalac 然而 例如 Java 项目 jar 包含 src foo bar java s
  • 如何在 Node.js Web 应用程序中管理 MongoDB 连接?

    我正在使用节点 mongodb native用MongoDB驱动写一个网站 我对如何管理连接有一些疑问 仅使用一个 MongoDB 连接来处理所有请求是否足够 是否存在任何性能问题 如果没有 我可以设置一个全局连接以在整个应用程序中使用吗
  • Xcode 4.2 无法调试 iOS 4.2.1 (8C148)

    我最近更新到 Xcode 4 2 我还将我的新 iPad 2 和 iPod 最新一代 更新到了 iOS 5 我构建了我的应用程序并且可以毫无问题地调试它们 我运行 iOS 4 2 1 8C148 的旧版 iPod 无法运行 也没有出现任何错
  • Firebase BigQuery 服务器偏移时间

    背景 我正在将 Firebase 分析数据导出到 BigQuery 我正在使用 cron 作业来处理 BigQuery 中的数据以获得洞察力 Problem 为了能够只处理增量数据 即自上次运行 cron 作业以来到达的数据 我需要一种方法