4

我们在 BigQuery 中使用 DBT 与 GCP 和 BigQuery 进行转换,安排我们每天的最简单方法run dbt似乎是BashOperator在 Airflow 中。目前我们有两个独立的目录 / github 项目,一个用于 DBT,另一个用于 Airflow。为了安排 DBT 与 Airflow 一起运行,我们的整个 DBT 项目似乎需要嵌套在我们的 Airflow 项目中,这样我们就可以为我们的dbt runbash 命令指向它?

是否可以在不将我们的 DBT 目录移动到我们的 Airflow 目录中的情况下dbt run触发我们?dbt test使用airflow -dbt 包,对于dir中的default_args,也许可以在这里指向DBT 项目的gibhub 链接?

4

3 回答 3

8

我的建议是将您的 dbt 和气流代码库分开。确实有更好的方法:

  1. 在一个简单的基于 python 的图像中对您的 dbt 项目进行 dockerise,您可以在其中复制代码库
  2. 将其推送到 DockerHub 或 ECR 或您正在使用的任何其他 docker 存储库
  3. 在您的气流 DAG 中使用DockerOperator您的 dbt 代码运行该 docker 映像

我假设您在此处使用气流 LocalExecutor,并且您希望在dbt run运行气流的服务器上执行工作负载。如果不是这种情况并且您可以访问 Kubernetes 集群,我建议您改用KubernetesPodOperator.

于 2020-11-18T09:35:15.483 回答
3

根据通过赞成票和支持评论的共识接受了另一个答案,但是我想发布我目前正在使用的第二个解决方案:

  • dbtairflowrepos / 目录彼此相邻。
  • 在我们的气流中docker-compose.yml,我们将我们的 DBT 目录添加为一个卷,以便气流可以访问它。
  • 在我们的气流中Dockerfile,安装 DBT 并复制我们的dbt代码。
  • 使用BashOperatortorun dbttest dbt.
于 2020-11-25T15:09:25.493 回答
0

由于您在 GCP 上,另一个完全无服务器的选项是使用云构建而不是气流运行 dbt。如果您想要更多的编排,您还可以向其中添加工作流。如果你想要一个详细的描述,有一篇描述它的帖子。https://robertsahlin.com/serverless-dbt-on-google-cloud-platform/

于 2021-11-27T11:08:44.323 回答