在dbt中声明多个仓库

Jb-*_*-99 5 dbt

我对 dbt 很陌生,我想在一个项目中使用两种仓库,目前我声明了我的 clickhouse 仓库,我将为其制作表格,并且我需要添加另一个仓库 MindsDB 因为我想引用一些表格在里面

目前我的 prfofile.yml 看起来像这样

dbt-project:
  target: dev
  outputs:
    dev:
      type: clickhouse
      schema : clickhouse_l
      host: 8.77.780.70
      port: 6000
      user: xxx
      password: xxxx
Run Code Online (Sandbox Code Playgroud)

我也想添加下面的仓库

type: mysql
host: mysql.mindsdb.com
user: mindsdb.user@example.com
password: xxx
port: 3306
dbname: mindsdb
schema: exampl_xxx
threads: 1
Run Code Online (Sandbox Code Playgroud)

有办法做到吗?谢谢

tco*_*eer 2

这有点超出了 dbt 的设计目的。是否有任何原因不能将多个项目与其自己的部署一起使用?想必这些模型相互依赖?

如果我必须这样做,我会:

  1. 创建两个目标(或一组目标),每个仓库一个(或每个仓库的 dev/prod 等)
  2. 创建一个自定义的物化来包装典型的表物化,但如果与target.type指定的适配器不匹配则不执行任何操作
  3. 在 shell 脚本中串联地在每个适配器上运行项目
  4. 使用标签选择 DAG 中位于其他适配器模型上游/下游的部分

我认为问题的核心是dbt run需要数据库连接来编译您的项目,因此您确实不能run同时针对两个数据库。我上面描述的实际上并不比拥有两个独立项目更好。您可能想考虑使用编排器,例如 Airflow、Dagster 或 Prefect。