在dbt中声明多个仓库

Declaring multiple warehouses in 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

我也想添加下面的仓库

type: mysql
host: mysql.mindsdb.com
user: mindsdb.user@example.com
password: xxx
port: 3306
dbname: mindsdb
schema: exampl_xxx
threads: 1

有办法吗?谢谢

这有点超出了 dbt 的设计目的。有什么理由不能将多个项目用于自己的部署?大概这些模型相互依赖?

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

  1. 创建两个目标(或目标集),每个仓库一个(或每个仓库 dev/prod,等等)
  2. 创建一个 custom materialization 包装典型的 table 实体化,但是 no-ops 如果 target.type 不匹配指定的适配器
  3. 运行 系列中每个适配器上的项目,在 shell 脚本中
  4. 将标签用于 select DAG 中 up/downstream 来自其他适配器模型的部分

我认为问题的核心是 dbt run 需要一个数据库连接来编译你的项目,所以你真的不能 run 同时针对两个数据库。我上面描述的并不比拥有两个独立项目好多少。您可能需要考虑使用协调器,例如 Airflow、Dagster 或 Prefect。