我已将 dbt_project.yml 配置为
var:
schema: "my_schema"
models:
my_models:
landing:
+schema: schema_not_local
和 profile.yml 为
dbt_myproject:
outputs:
local:
schema: "my_schema"
当我运行
dbt run --target local --vars '{"schema" : "my_schema"}'
时,对于 dbt_myproject 下的所有模型,dbt 仍然尝试创建一个表示 "creating schema if nit exists my_db."
的模式,并因错误而失败,因为它在数据库名称后没有模式。对于调试日志,似乎在 sql 中,模式被识别为 my_schema
,而 db 被识别为 profile.yml 中定义的目标中的模式。为什么 dbt 仍然尝试创建模式而不是使用“my_schema”?
schema_not_local 可能会覆盖 var。
尝试以下
dbt_project.yml
var:
schema: "my_schema"
models:
my_models:
landing:
+schema: "{{ var('schema') }}"
配置文件.yml
dbt_myproject:
outputs:
local:
type: snowflake
account: your_account
user: your_user
password: your_password
database: my_database
schema: "{{ var('schema') }}"