我们使用Firebase Analytics从我们的应用程序收集事件。我们已将事件导出到BigQuery。每天我们都会运行一些ETL作业,以便在BigQuery中创建更友好的分析表(例如会话,购买)。
问题是我们什么时候应该运行这些ETL作业?
我们知道Firebase Analytics在BigQuery中创建了“ events_intraday_”表,该表在午夜后的几个小时后更改为“ events_”。我们也了解,如果客户端未与Internet连接,则稍后可能会报告一些事件,但这不是问题。
我们的理论是'events_intraday_'表是某种临时表,当它更改为'events_'时,我们应该运行ETL作业。不幸的是,我们找不到任何有关它的文档。这是个好的解决方案吗?
答案 0 :(得分:0)
来自Announcing Realtime Exporting of your Analytics Data into BigQuery:
一天[1]结束时,该数据将被移入其永久的appevents_ home,并且旧的日内表将自动为您清除。
使用:
[1]这是通过查看开发者的时区确定的。
因此,看来每日表是在您的时区的午夜创建的。
答案 1 :(得分:0)
感谢Frank van Puffelen在Firebase Blog上找到了文章 How Long Does it Take for My Firebase Analytics Data to Show Up?,表示导出到BigQuery的分析数据最多可以延迟1小时以上。因此,基于此信息,应该运行ETL作业,比如说UTC + 0凌晨2点,并且查询应该只包含带有events_intraday表的UNION ALL事件。
因此,如果今天是2019年4月2日,并且我想查询上个月的数据,则查询应类似于:
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'
)