我们正在 Google BigQuery 中构建数据仓库解决方案,使用 Apache Airflow 将 MySQL 表传输到云端。我每天都会使用
进行传输并运行增量获取数据MySQLToGoogleCloudStorageOperator => GoogleCloudStorageTBigQueryOperator
在 .sql 中使用该位:
WHERE timestamp BETWEEN '{{ macros.ds_add(ds, -1) }}' AND '{{ ds }}'
它工作正常,但我们有一个表,我们希望每月更新一次,即每月 10 日,但获取上个月整个月的数据 - 所以当以 2019-03-10 的执行日期运行时,我们想要获取
timestamp BETWEEN '2019-02-01 00:00:00' AND '2019-03-01 00:00:00'
等等。最好、最简单的方法是什么?
最佳答案
您考虑过 Cloud BQ 分区吗?
您可以创建每月分区(本质上是动态的),并且仅修补您希望在 Cloud BQ 上发生变化的月份的数据。
所有这些都可以通过 Cloud Composer 和 Cloud Functions 之间的耦合来非常巧妙地编排。
关于mysql - Apache Airflow - MySQL 到 BigQuery - 如何获取上个月的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55395231/