更改仓库中种子数据的物化名称(-前缀)

Change materialization name(-prefix) of seed data in the warehouse

目前仓库自动生成种子,名称为dbt_{schema_name}_seed_data,其中{schema_name}是[=17=中指定的模式名].

我想指定一个不同的名字,例如dbt_processing_seed_data,不将 profile.yml 中的架构名称更改为 'processing'。

这背后的原因是,不同的开发人员希望拥有自己的架构,这样他们就不会互相干扰。但是(相同的)种子数据在仓库中多次存储是没有必要的。

您可以在 dbt_project.yml 文件中设置种子的架构。见 docs.

要获得您描述的行为,其中目标名称未添加到架构中,您需要通过在项目中创建一个具有该名称的新宏来覆盖 generate_schema_name 宏。 Docs on that are here。您可以使用节点的资源类型,以便此行为仅应用于种子。

{% macro generate_schema_name(custom_schema_name, node) -%}
    {%- set default_schema = target.schema -%}
    {%- if custom_schema_name is none -%}{{ default_schema }}
    {%- elif node.resource_type == "seed" -%}{{ custom_schema_name | trim }}
    {%- else -%}{{ default_schema }}_{{ custom_schema_name | trim }}
    {%- endif -%}
{%- endmacro %}

不过,我要提醒大家不要这样做。种子是 version-controlled,实际上并不打算用于大型原始数据集(请参阅 docs again)。由于它们与代码一起签入,因此它们应该真正共享代码所具有的相同环境分离。