我正在尝试遵循 Gitlab 的文件夹和 dbt 结构。特别是对于源,他们为每个源表都有一个单独的模式。我的生产模式称为分析,我的生产数据库称为分析。当我在生产中运行时,dbt 将创建 analytics.analytics_sfdc 而不是 analytics.sfdc。如何进行设置以便将源表写入analytics.sfdc?
谢谢!
我正在尝试遵循 Gitlab 的文件夹和 dbt 结构。特别是对于源,他们为每个源表都有一个单独的模式。我的生产模式称为分析,我的生产数据库称为分析。当我在生产中运行时,dbt 将创建 analytics.analytics_sfdc 而不是 analytics.sfdc。如何进行设置以便将源表写入analytics.sfdc?
谢谢!
模式前缀/后缀设置是 dbt 中的默认设置。generate_schema_name
您可以通过更改项目中的宏来覆盖它,如此处所述。
这是宏的默认版本的代码:
{% macro generate_schema_name(custom_schema_name, node) -%}
{%- set default_schema = target.schema -%}
{%- if custom_schema_name is none -%}
{{ default_schema }}
{%- else -%}
{{ default_schema }}_{{ custom_schema_name | trim }}
{%- endif -%}
{%- endmacro %}`
您可以在其中看到前缀逻辑。要覆盖它,您只需在项目中创建一个新版本的宏。
假设您的生产环境是一个名为“prod”的目标,它可以像添加这样简单:
{% macro generate_schema_name(custom_schema_name, node) -%}
{{ generate_schema_name_for_env(custom_schema_name, node) }}
{%- endmacro %}
根据文档,这将表现为如下,这似乎是你想要的:
或者,您可以更改第一个代码片段的逻辑,以针对您的特定设置执行更自定义的操作。