我应该何时为导出到BigQuery的Firebase Analytics数据运行每日ETL作业?

时间:2019-04-01 11:57:29

标签: firebase google-bigquery etl firebase-analytics

我们使用Firebase Analytics从我们的应用程序收集事件。我们已将事件导出到BigQuery。每天我们都会运行一些ETL作业,以便在BigQuery中创建更友好的分析表(例如会话,购买)。

问题是我们什么时候应该运行这些ETL作业?

我们知道Firebase Analytics在BigQuery中创建了“ events_intraday_”表,该表在午夜后的几个小时后更改为“ events_”。我们也了解,如果客户端未与Internet连接,则稍后可能会报告一些事件,但这不是问题。

我们的理论是'events_intraday_'表是某种临时表,当它更改为'events_'时,我们应该运行ETL作业。不幸的是,我们找不到任何有关它的文档。这是个好的解决方案吗?

2 个答案:

答案 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'
)