我一直试图在dbt_project.yml
以及模型文件本身中添加target_schema。
models:
project_name:
model_name:
+target_schema: new_schema
根据我的理解和我在官方文档中读到的,这应该是可行的。但是它被忽略了,显示为标准的dbo
。我手工创建了模式以确保它存在,如果我设置了schema
,它就会创建一个,格式为dbo_schema
,就像文档中描述的那样。但target_schema
一直被忽视?
是SQL Server和dbt不支持吗?
没有target_schema
配置。您链接到的文档将该名称用于在活动目标中定义的模式配置,该配置在profiles.yml
文件中配置:
# profiles.yml
my_profile:
target: dev # this is the default target
outputs:
dev:
schema: dbo # this is what the docs call target_schema
在单个模型(或模型目录)上,您可以额外设置一个也称为schema
的配置。这设置了文档中所说的custom_schema
。这个配置是从dbt_project.yml
, "properties".yml
文件,或者模型文件中的{{ config() }}
块
# dbt_project.yml
models:
project_name:
model_name:
+schema: new_schema # this sets what the docs call custom_schema
上述两个配置文件一起将model_name
具体化为一个名为dbo_new_schema
的模式,正如您链接到的文档中所解释的那样,因为默认行为是<target_schema>_<custom_schema>
。
如果您只是想将所有模型具体化为new_schema
,那么更改profiles.yml
文件中的值,并且不要在dbt_project.yml
或其他任何地方设置schema
配置。如果你只想要一些模型实体化到new_schema
,那么我建议坚持使用自定义模式的默认约定,因为这将更好地推广到多个环境(对于开发人员,QA等)。最后,如果这确实不是您想要的,文档描述了如何覆盖自定义模式名称生成行为。