【发布时间】:2021-02-16 11:30:28
【问题描述】:
我正在尝试遵循 Gitlab 的文件夹和 dbt 结构。特别是对于源,他们为每个源表都有一个单独的模式。我的生产模式称为分析,我的生产数据库称为分析。当我在生产中运行时,dbt 将创建 analytics.analytics_sfdc 而不是 analytics.sfdc。如何进行设置,以便将源表写入 analytics.sfdc?
谢谢!
【问题讨论】:
标签: dbt
我正在尝试遵循 Gitlab 的文件夹和 dbt 结构。特别是对于源,他们为每个源表都有一个单独的模式。我的生产模式称为分析,我的生产数据库称为分析。当我在生产中运行时,dbt 将创建 analytics.analytics_sfdc 而不是 analytics.sfdc。如何进行设置,以便将源表写入 analytics.sfdc?
谢谢!
【问题讨论】:
标签: dbt
模式前缀/后缀设置是 dbt 中的默认设置。您可以通过更改项目中的generate_schema_name 宏来覆盖它,如here 所述。
这是宏的默认版本的代码:
{% 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 %}
根据文档,它的行为如下,这似乎是您想要的:
或者,您可以更改第一个代码 sn-p 的逻辑,以根据您的特定设置执行更自定义的操作。
【讨论】: