【问题标题】:When should I run daily ETL jobs for Firebase Analytics data exported to BigQuery?我应该什么时候为导出到 BigQuery 的 Firebase Analytics 数据运行每日 ETL 作业?
【发布时间】:2019-08-22 14:05:35
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: firebase google-bigquery etl firebase-analytics


    【解决方案1】:

    来自Announcing Realtime Exporting of your Analytics Data into BigQuery

    在一天结束时[1],这些数据将被移入其永久的appevents_home,并且会自动为您清理旧的盘中表。

    与:

    [1] 这是通过查看开发者的时区来确定的。

    所以看起来每日表格是在午夜为您的时区创建的。

    【讨论】:

    • 不幸的是,这不是真的。我们通常观察到每日表是在 UTC+0 上午 6 点左右创建的(但也可能在上午 10 点左右发生)。很高兴您让我想起了 Firebase 博客。我发现那里的文章回答了我的问题。
    • 我忘了说我们的时区是UTC+1/+2。
    【解决方案2】:

    感谢 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'
    )
    

    【讨论】:

      猜你喜欢
      • 2017-09-23
      • 2019-09-09
      • 1970-01-01
      • 2023-03-19
      • 2018-07-13
      • 2015-03-30
      • 1970-01-01
      • 2019-09-22
      • 1970-01-01
      相关资源
      最近更新 更多