Firebase 导出到 BigQuery:从日内表转为全日表时 event_timestamp 发生变化

问题描述 投票:0回答:2

我有一个通过 Firebase 导出连接到 BigQuery Warehouse 的移动应用程序。为了使仪表板保持最新状态,我每天运行几次增量作业 (dbt),以从 BigQuery 创建的包含导入 Firebase 数据的表中提取数据。 (参见本文)。

对于实时数据流,会创建一个后缀为“_intraday”的表。当这一天结束后,数据将转移到仅包含全天的表中,并且日内表将被删除。

看起来当这种情况发生时(从盘中变为全天),每个条目的 event_timestamp (UNIX) 都会略有变化(几毫秒)。问题:我将 user_id 和 event_timestamp 的组合定义为唯一键。由于这个问题,处理移动表的第一个作业会将每一行识别为一个新的、唯一的行,将我的结果数据精确复制 2。

有人见过这个问题并知道它是否是预期的吗?除了在客户端实现事件 ID、为每个事件提供唯一标识符(通过自定义事件参数)并使用它而不是 user_id + 时间戳之外,您还知道其他解决方案吗?

auto-created tables

谢谢你。

firebase google-bigquery google-analytics-firebase
2个回答
1
投票

考虑“event_server_timestamp_offset”应该可以解决这个问题。

event_timestamp - ifnull(event_server_timestamp_offset, 0) as event_timestamp

0
投票

我想确认这个错误(或功能?)是否发生。 ChunYu提供的解决方案有时也不起作用,因为在某些情况下,提供的公式会错过合并时间戳1、2微秒。我不确定误差是否总是很小,也许你可以推导出一些逻辑来处理这种不确定性。

我个人认为最好等待日表中的数据合并,因为这些数据不会再改变了。或者,您可以使用热门实时数据,然后用整合数据替换它。

还有另一篇post证实了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.