如何在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
相关产品推荐
相关产品推荐

