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

如何在sources.yml中定义按年拆分的联合源适配dbt文档?

解决方案:在sources.yml中定义动态匹配的源表并完善文档

1. 在sources.yml中配置匹配模式

针对你按TABLENAMEYYYY格式命名的源表,可以在sources.yml里通过table_pattern匹配所有符合规则的表,同时补充元数据信息:

sources:
  - name: business_data_source  # 自定义源名称
    database: DBNAME
    schema: SCHEMA
    tables:
      - name: tablename
        table_pattern: "TABLENAME%"  # 匹配所有以TABLENAME开头的表
        description: "按年份拆分的业务数据表,包含TABLENAME2020、TABLENAME2021等子表"
        columns:
          - name: id
            description: "数据唯一标识ID"
          - name: transaction_date
            description: "业务发生日期"
          # 按需添加其他通用列的描述

2. 调整模型代码关联源定义

修改你的联合模型代码,用source()函数替代硬编码的数据库/ schema信息,让dbt能识别模型与源的关联关系:

{% set relations = dbt_utils.get_relations_by_pattern(
    database=source('business_data_source', 'tablename').database,
    schema_pattern=source('business_data_source', 'tablename').schema,
    table_pattern='TABLENAME%') %}

with source as (
    select * from (
        {{ dbt_utils.union_relations(relations=relations) }}
    )
)

select * from source

3. 补充联合模型的文档描述

在模型对应的配置yml文件(比如models/your_union_model.yml)中,给联合模型添加说明,明确它的来源和作用:

models:
  - name: your_union_model  # 你的联合模型名称
    description: "整合所有年份的TABLENAME业务数据,由TABLENAME2020、TABLENAME2021等表联合生成"
    columns:
      - name: id
        description: "继承自源表的唯一标识ID"
      - name: transaction_date
        description: "继承自源表的业务发生日期"
      # 按需补充其他列的描述

4. 生成并查看文档

运行dbt docs generate生成文档,再用dbt docs serve启动本地服务后,就能在文档中看到:

  • Sources板块下会展示你定义的源,以及匹配到的所有年份子表
  • Models板块下的联合模型会关联到对应的源,清晰展示数据流向和说明

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 11:50:22