我们使用Firebase Analytics从我们的应用中收集活动。我们已将事件导出到BigQuery。我们每天运行一些ETL作业,在BigQuery中创建更友好的分析表(例如会话,购买)。
问题是我们何时应该运行这些ETL工作?
我们知道Firebase Analytics会在BigQuery的'events_intraday_'表中创建,该表在午夜过后的几个小时后会更改为'events_'。我们也理解,如果客户端未与互联网连接,可能会在稍后报告某些事件,但这不是问题。
我们的理论是'events_intraday_'表是某种临时表,我们应该在它变为'events_'时运行ETL作业。很遗憾,我们找不到任何关于它的文档。这是好的解决方案吗?
来自Announcing Realtime Exporting of your Analytics Data into BigQuery:
在一天结束时[1],此数据将被移动到其永久的appevents_ home中,旧的日内表将自动为您清理。
附:
[1]这是通过查看开发人员的时区来确定的。
所以看起来每天的桌子是在午夜为你的时区创建的。
感谢Frank van Puffelen我在Firebase博客How Long Does it Take for My Firebase Analytics Data to Show Up?上发现了一篇文章,该文章说导出到BigQuery的分析数据可以延迟到1小时以上。因此,基于此信息,应该运行ETL作业,比如说2 AM UTC + 0和查询应该只有UNION ALL事件和events_intraday表。
因此,如果今天是2019-04-02并且我想查询上个月的数据,则查询应如下所示:
SELECT * FROM
(
SELECT *
FROM `<PROJECT_ID>.analytics_<ANALYTICS_ID>.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20190301' AND '20190401'
)
UNION ALL
(
SELECT *
FROM `<PROJECT_ID>.analytics_<ANALYTICS_ID>.events_intraday_*`
WHERE _TABLE_SUFFIX = '20190401'
)