为什么 dbt 不使用定义的模式

问题描述 投票:0回答:1

我已将 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”?

snowflake-cloud-data-platform dbt
1个回答
0
投票

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') }}" 
© www.soinside.com 2019 - 2024. All rights reserved.