未记录事实核验 · 状态:维护中
记录仅说明核验时间与维护状态,不保证适用于所有环境;使用前请留意正文中的版本、适用条件与风险提示。
warning 适用边界与维护说明
本文适用于规划从 SQL 建模、增量更新、质量测试到宏复用、SCD Type 2 和 Airflow/CI 集成的五阶段学习路线,不是独立提供全部操作材料的实操教程;读者应具备 SQL 基础,进入团队协作与 CI 集成阶段前还需掌握 Git。正文中的“Git 基础操作”已改为纯文本名称,不再提供跳转。快速开始以已有数据库环境为前提,安装命令以 PostgreSQL 适配器为例,使用 DuckDB 等数据库时需按注释选择对应适配器,并结合安装章节完成连接配置。“5 分钟”应视为环境就绪后的参考时间。元数据 updated 与文末“最后更新”仍不一致,不能据此判断全文同步日期。本次仅作全文结构审阅,未外部核验产品额度、Fusion 相关现状或所链接章节的内容与可访问性。 已取消无法确定目标的可点击引用「Git/03-Git基础操作」,保留原提及;Missing link target: Git/03-Git基础操作
dbt 学习路线图 - 现代分析工程师的必备工具
abstract 路线图概览
- 目标人群:数据分析师、初中级数据工程师、希望向 Analytics Engineering 转型的从业者
- 学习周期:4-8 周(每天 1-2 小时)
- 核心价值:用软件工程的方式管理 SQL 项目,告别 SQL 脚本的混乱状态
- 技术定位:现代数据栈(Modern Data Stack)的转换层核心工具
2026更新:dbt Fusion 与 AI 时代 SQL 语义工程
dbt 的学习重点正在从“SQL 项目组织”升级成“SQL 语义工程”:依赖、血缘、测试、列级上下文、开发反馈,都开始成为 AI Agent 可靠生成 SQL 的前提。
建议完成阶段一到阶段三后阅读:
- dbt Fusion与AI时代SQL语义工程:理解 Fusion 引擎、语义理解、状态感知编排与 AI-ready metadata。
- 语义层工程实践:把 dbt 项目中的业务口径沉淀成可复用语义资产。
- AI时代分析SQL实战:训练“人审 AI 写 SQL”的判断力。
tip 学习判断
AI 会让低质量 SQL 变得更快,也会让高质量 SQL 项目变得更值钱。dbt 的核心价值,是把散落在脑子里的业务规则变成机器可读、团队可审、Agent 可引用的上下文。
dbt 在现代数据栈中的位置
理解 dbt 最快的方式,是先理解现代数据栈(Modern Data Stack)的分工。
%%{init: {"theme":"base","themeVariables":{"fontFamily":"PingFang SC, -apple-system, Source Han Serif SC, serif","fontSize":"16px","background":"#FDFBF5","primaryColor":"#FDFBF5","primaryTextColor":"#2D2A26","primaryBorderColor":"#6E6A60","secondaryColor":"#E8EFE8","secondaryBorderColor":"#8FA890","secondaryTextColor":"#2D2A26","tertiaryColor":"#FDFBF5","tertiaryBorderColor":"#9A9488","tertiaryTextColor":"#6E6A60","lineColor":"#6E6A60","textColor":"#2D2A26","mainBkg":"#FDFBF5","nodeBorder":"#2D5A3D","clusterBkg":"#F3EEDF","clusterBorder":"#9A9488","edgeLabelBackground":"#FDFBF5"},"flowchart":{"htmlLabels":true,"curve":"basis","padding":20,"nodeSpacing":60,"rankSpacing":70,"useMaxWidth":false},"themeCSS":".node rect, .node polygon, .node circle { stroke-width: 1.5px; } .edgePath .path { stroke-width: 1.5px; } .cluster-label .nodeLabel, .cluster-label foreignObject { color: #2D2A26 !important; } .edgeLabel, .edgeLabel foreignObject { color: #2D2A26 !important; background-color: #FDFBF5; } .edgeLabel rect { fill: #FDFBF5; }"}}%%
flowchart LR
subgraph Source["数据来源"]
S1[业务数据库\nMySQL/PostgreSQL]
S2[SaaS工具\nSalesforce/GA]
S3[埋点数据\nEvent Log]
end
subgraph Ingestion["数据摄取 (Extract & Load)"]
I1[Fivetran / Airbyte\nStitch / 自研管道]
end
subgraph Warehouse["数据仓库 (Storage)"]
W1[Snowflake / BigQuery\nRedshift / ClickHouse]
end
subgraph Transform["转换层 (Transform)"]
T1["⭐ dbt\n(本系列重点)"]
end
subgraph Consume["数据消费 (Serve)"]
C1[BI 工具\nTableau/Metabase]
C2[数据 API\n内部服务]
C3[机器学习\n特征工程]
end
Source --> Ingestion --> Warehouse --> Transform --> Consume
style T1 fill:#f59e0b,color:#fff
style Warehouse fill:#3b82f6,color:#fff
dbt 专门负责 T(Transform)这一层,也就是 ELT 中的最后一个字母。它的工作是:在数据仓库内部,把原始数据转换成业务需要的数据模型。
note 为什么强调"在仓库内部"
传统 ETL 在数据落仓之前完成转换(Extract → Transform → Load)。 现代 ELT 先把原始数据加载到仓库,再在仓库内部用 SQL 完成转换(Extract → Load → Transform)。 这个范式转变让 dbt 成为可能,也让 数据仓库架构设计 发生了根本性变化。
学习路线总览
阶段一:建立认知(第 1 周)
明确 dbt 解决的问题,理解它的核心价值主张。
| 文档 | 核心问题 | 预计时间 |
|---|---|---|
| 01-dbt概述与理念 | dbt 是什么、为什么需要它 | 1 小时 |
| 02-dbt安装与项目初始化 | 把 dbt 跑起来 | 2 小时 |
阶段目标:能解释 dbt 解决了什么问题,完成本地安装并连接到数据库。
阶段二:核心能力(第 2-3 周)
学会用 dbt 的方式组织 SQL 项目。
| 文档 | 核心问题 | 预计时间 |
|---|---|---|
| 03-Model基础 | 怎么写 dbt 模型 | 2 小时 |
| 04-数据建模分层 | 如何组织数据层次 | 3 小时 |
| 05-增量模型 | 大表怎么高效更新 | 2 小时 |
阶段目标:能独立设计三层数据架构,完成增量更新的配置。
阶段三:质量与文档(第 4 周)
让数据可信赖、可理解。
| 文档 | 核心问题 | 预计时间 |
|---|---|---|
| 06-测试与数据质量 | 怎么保证数据质量 | 2 小时 |
| 07-文档与数据血缘 | 怎么让数据可解释 | 1.5 小时 |
阶段目标:掌握数据质量即代码的理念,能生成并查看数据血缘图。
阶段四:进阶能力(第 5-6 周)
掌握让 dbt 更强大的高级特性。
| 文档 | 核心问题 | 预计时间 |
|---|---|---|
| 08-Jinja与宏 | 怎么复用 SQL 逻辑 | 3 小时 |
| 09-Seeds与Snapshots | 维度表和历史数据怎么处理 | 2 小时 |
阶段目标:能用 Jinja 宏封装复用逻辑,实现 SCD Type 2 缓慢变化维。
阶段五:工程化落地(第 7-8 周)
把 dbt 项目部署到生产环境。
| 文档 | 核心问题 | 预计时间 |
|---|---|---|
| 10-dbt与调度集成 | 怎么自动化运行 dbt | 2 小时 |
| 11-dbt项目实战 | 完整项目怎么做 | 4 小时 |
| 12-dbt最佳实践 | 团队怎么用好 dbt | 2 小时 |
阶段目标:完成一个端到端的 dbt 数仓项目,能与 Airflow/CI 集成。
dbt 的核心价值一览
在开始学习之前,先建立一个清晰的价值认知,有助于在遇到困难时保持动力。
没有 dbt 时的典型痛点
analytics/
├── 用户分析.sql # 不知道依赖哪些表
├── 用户分析_v2.sql # 什么时候改的?改了什么?
├── 用户分析_最终版.sql # 这是最新的吗?
├── 用户分析_真正最终版.sql # 为什么有这么多版本...
├── 收入报表.sql # 数据对不上时找不到原因
└── 订单汇总(老王写的别动).sql # 这就是真实的项目状态
有了 dbt 之后
models/
├── staging/ # 来源清晰,一个源对应一个文件
│ ├── stg_orders.sql
│ └── stg_customers.sql
├── intermediate/ # 中间逻辑有命名规范
│ └── int_order_items_joined.sql
└── marts/ # 最终产出对应业务域
├── fct_orders.sql
└── dim_customers.sql
每个文件背后都有:版本控制(Git)、依赖追踪(ref())、自动测试、数据文档。
与知识库其他内容的关联
dbt 不是孤立存在的,它与以下知识点紧密关联:
前置知识(学 dbt 之前应该掌握的):
- SQL基础到进阶 - dbt 的核心还是 SQL,SQL 能力越强 dbt 用得越好
- Git 基础操作 - dbt 项目应该用 Git 管理,是团队协作的基础
- 数据仓库架构设计 - 理解 ODS/DWD/DWS/ADS 分层后会更容易理解 dbt 的分层理念
配套工具(与 dbt 一起使用的):
- Airflow核心概念 - 最常见的 dbt 调度器,学完 dbt 后可以学如何与 Airflow 集成
- 数据质量评估方法 - dbt test 实现的就是代码化的数据质量管理
进阶方向(学完 dbt 后可以探索的):
常见问题
faq dbt 适合我吗?
如果你满足以下任一条件,dbt 对你很有价值:
- 你写 SQL 查询,但项目越来越难维护
- 你想向"分析工程师(Analytics Engineer)"方向发展
- 你的团队在用 Snowflake / BigQuery / Redshift / ClickHouse / DuckDB
- 你想让数据分析工作更可靠、更可解释
faq 需要会编程才能用 dbt 吗?
不需要。dbt 的核心是 SQL,Python/Jinja 知识是加分项但不是必须的。
如果你能写 SELECT ... FROM ... WHERE ...,你就能入门 dbt。
faq dbt Core 和 dbt Cloud 怎么选?
学习阶段用 dbt Core(免费、开源、本地运行)。 生产环境如果不想自己维护调度,可以考虑 dbt Cloud(有免费额度)。 详见 01-dbt概述与理念。
快速开始
如果你已经有了一个 PostgreSQL 或者 DuckDB 环境,可以按以下步骤 5 分钟跑通第一个 dbt 项目:
# 1. 安装 dbt
pip install dbt-core dbt-postgres # 根据你的数据库选择适配器
# 2. 创建项目
dbt init my_first_dbt_project
# 3. 进入项目目录
cd my_first_dbt_project
# 4. 测试连接
dbt debug
# 5. 运行示例模型
dbt run
详细步骤见 02-dbt安装与项目初始化。
最后更新:2026-03-18
#dbt #Analytics-Engineering #现代数据栈 #学习路线 #数据建模