第3章:模型开发——结构、源与一次完整实战


第 3 章 · 模型开发:结构、源与一次完整实战

章节摘要:本章是全册的实战主线,沿着一条施工工序推进:先画图纸(模型目录与分层规范),再验材料(数据源声明与种子文件),然后定验收标准(数据质量测试),最后用一个电商项目从零到一把前两章的机制全部用一遍——订单、用户、支付三类数据从贴源层一路建到指标宽表,走完建模、实现、测试、上线的全过程。读完本章,你应当具备独立搭建一个中小规模 dbt 项目的完整能力。

学习目标

阅读完本章,你应当能够:

  1. 为一个新项目设计分层目录结构,并说清每一层「只做什么、不做什么」的职责边界;
  2. 制定模型的命名规范,让任何人不看代码就能从文件名判断模型所处的层和业务域;
  3. 用 source 声明接管上游原始表,并配置数据新鲜度告警,用 seed 管理小体量的参照数据;
  4. 为核心模型编写通用测试与自定义测试,把「字段非空、主键唯一、枚举合法」变成每次构建自动执行的验收项;
  5. 按照电商复盘的完整路径,独立完成一个从贴源层到指标宽表的端到端项目。

本章知识点清单

  • 三层标准结构:贴源清洗层、中间层、报表服务层,各层的职责红线;
  • 命名规范的三段式:前缀定层、业务域定归属、后缀定形态;
  • source 声明的双重作用:统一引用入口 + 新鲜度监控;
  • seed 的适用边界:什么数据适合进版本库当种子,什么数据坚决不进;
  • 通用测试与单测(singular test)的分工:结构性校验对业务规则校验;
  • 测试的严重级设置与告警路由;
  • 电商项目的端到端工序:需求 → 分层 → 实现 → 验收 → 上线。

核心概念速览

本章四个主题对应施工的四道工序:图纸(结构与规范)先行,材料(源与种子)进场验收,验收标准(测试)在开工前定好,最后才是主体工程(项目复盘)连轴转。这个顺序不是教学上的方便,而是实际项目里返工成本最低的顺序——图纸错了,后面每一层都在放大错误。

一句话锚点:分层是骨架,源与种子是材料,测试是验收标准——三样备齐,项目复盘才是一场「照图施工」而不是边干边猜。

本章使用说明

两种读法,取决于你的处境。边学边做型:跟着 3.1 立规范、3.2 登记源、3.3 配测试,到 3.4 看一次完整组装,读完即可动手搭自己的项目。先看全貌型:直接从 3.4 的复盘读起,遇到看不懂的工序再回前三节补概念——复盘是答案,前三节是解题过程,有人喜欢先看答案再验证过程,这完全成立。

另外提醒一点:本章的规范与清单(三层职责、命名三段式、测试四件套、上线检查单)都是「可以直接抄的工程物料」。抄不是贬义——这些条目在多个项目里被验证过,从抄开始、按自己业务改,比从零发明少踩一半的坑。工程方法论的学习本来就该站在别人的竣工图上。

子章节导航

3.1 模型结构与分层规范 —— 讲清三层结构(staging、intermediate、marts)各自的职责红线,以及命名规范如何让目录「自解释」。这一节是防止项目腐化的第一道闸。

3.2 数据源、种子与新鲜度 —— source 声明把「别人喂给我的原始表」统一登记在案,附带新鲜度监控;seed 把百万行以内的参照数据收进版本库。两者都是「进场材料验收」。

3.3 数据质量测试体系 —— 测试即验收:内置的通用测试覆盖结构性校验,自定义 SQL 测试覆盖业务规则,严重级决定告警路由。这一节的理念是「测试不是质检部门的活,是每道工序的自检」。

3.4 电商数仓复盘:从建模到上线 —— 一个完整项目的全程记录:从一页需求单出发,分层设计、逐层实现、配置测试、接入调度,到最后上线验证。前三节的所有概念在这里变成具体工序。

子章节之间的逻辑关系

前三节各交付一样「施工要素」,第四节把它们组装成完整项目:规范给项目骨架,源声明给项目材料,测试给项目验收,复盘把三者串成一条时间线。

3.1 分层规范(骨架) | v 3.2 源与种子(材料) | v 3.3 测试体系(验收标准) | v 3.4 电商项目复盘(骨架 + 材料 + 标准 => 一次真实施工) ​

前置知识与后续延伸

前置知识:第二章的机制(尤其物化与增量——分层设计里每层选什么物化直接引用 2.2 节的四要素法);读懂多表 JOIN 与窗口函数的基础 SQL。

往后的延伸:本章的项目规模控制在中小体量、单人可维护的范围。项目变大之后会遇到三类新问题——逻辑重复要靠宏抽取(4.1)、第三方通用模型要靠包管理(4.2)、大表性能要靠调优(4.3),这些是第四章的主题;项目要多人协作、定时生产,就进入第五章的环境与流水线话题。

作者与出处
原作者:灏天文库
来源:平台策划编纂
整理人: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U