1

我正在尝试遵循 Gitlab 的文件夹和 dbt 结构。特别是对于源,他们为每个源表都有一个单独的模式。我的生产模式称为分析,我的生产数据库称为分析。当我在生产中运行时,dbt 将创建 analytics.analytics_sfdc 而不是 analytics.sfdc。如何进行设置以便将源表写入analytics.sfdc?

谢谢!

4

1 回答 1

2

模式前缀/后缀设置是 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 %}

根据文档,这将表现为如下,这似乎是你想要的:

  • 在产品中:
    • 如果提供了自定义模式,则模型的模式名称应与自定义模式匹配,而不是连接到目标模式。如果未提供自定义架构,则模型的架构名称应与目标架构匹配。
  • 在其他环境中(例如 dev 或 qa):
    • 在目标模式中构建所有模型,如忽略自定义模式配置。

或者,您可以更改第一个代码片段的逻辑,以针对您的特定设置执行更自定义的操作。

于 2020-11-03T19:22:46.287 回答