我有两个Firebase项目(一个iOS和一个Android)加入Bigquery。我需要将两个项目中的一些特定数据合并,展平并聚合到一个组合表中,以便我可以在不查询所有日常表中的所有数据行的情况下报告它。
为了填充这个聚合表,我目前有两个python脚本每5分钟查询一次iOS和Android日内表。该脚本从聚合表中获取最大时间戳,然后查询日内表以获取具有更大时间戳的任何记录(我分别跟踪iOS和Android的最大时间戳,因为它们经常不同)。
我使用此(缩写)通配符语法查询日内表:
SELECT yadda, yadda, timestamp_micros, 'ios' as platform
FROM `myproject.iOSapp.app_events_intraday*`
WHERE timestamp_micros > (Select max(timestamp_micros)
from myAggregateTable WHERE platform = 'ios' )
当盘中表翻转到新的一天时,是否有任何危险,当我的脚本在23:57运行然后再在00:02运行时,我会错过任何记录?
答案 0 :(得分:4)
我以为我会将测试结果发布几个月。以下是我看到的基本机制:
DAY1
日内表格格林威治标准时间午夜(xyz.app_events_intraday_20180101
)DAY2
日内表在24小时后创建(xyz.app_events_intraday_20180102
),但DAY1
日内表格会在几个小时内保持不变DAY1
表被“重命名”为xyz.app_events_20180101
,而您只剩下一个(当前)日内表我的测试显示,即使在第3步发生后,其他数据 也已添加到app_events_*
表中,因此 NOT 可安全地假设一旦名称发生变化,数据就是稳定/静态的。我有新的数据出现在2或3天后。