You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DBT模型中继承源数据库的文档?

如何将DBT源表列描述同步到下游模型列?

完全可行,无需重复编写列描述,以下是两种实用实现方式:

方法1:手动引用源列描述(适合列数少的场景)

在下游模型的schema.yml文件中,直接引用对应源表列的描述属性,就能继承源端的列描述。

示例:
假设源表的schema.yml定义如下:

version: 2

sources:
  - name: my_retail_source
    tables:
      - name: customer
        columns:
          - name: customer_id
            description: "客户唯一标识,自增主键"
          - name: customer_name
            description: "客户全名"

下游模型stg_customer的schema.yml可这样编写,直接复用源列描述:

version: 2

models:
  - name: stg_customer
    columns:
      - name: customer_id
        description: "{{ source('my_retail_source', 'customer').columns['customer_id'].description }}"
      - name: customer_name
        description: "{{ source('my_retail_source', 'customer').columns['customer_name'].description }}"
      # 模型新增列单独编写描述
      - name: is_active
        description: "标记客户是否处于活跃状态"

方法2:用宏批量生成列描述(适合列数多的场景)

如果源表列数量较多,手动引用效率低,可以编写DBT宏,自动遍历源表列并同步描述。

步骤1:创建宏文件

在macros/目录下新建source_column_descriptions.sql,内容如下:

{% macro get_source_column_descriptions(source_name, table_name) %}
  {% set source_table = source(source_name, table_name) %}
  {% set columns = source_table.columns %}
  {% for column in columns %}
    - name: {{ column.name }}
      description: "{{ column.description | replace('"', '\\"') }}"
  {% endfor %}
{% endmacro %}

步骤2:在模型schema中调用宏

下游模型的schema.yml可简化为:

version: 2

models:
  - name: stg_customer
    columns:
      {{ get_source_column_descriptions('my_retail_source', 'customer') }}
      # 新增列单独补充描述
      - name: is_active
        description: "标记客户是否处于活跃状态"

后续源表列描述更新时,模型的描述会自动同步,无需手动修改。注意:若模型对源列做了重命名,需单独为重命名后的列编写描述,上述方法仅适用于与源列同名的字段。

内容的提问来源于stack exchange,提问作者Dyllan Hankins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 07:01:10