Agent Skills
返回列表
💻

dbt 模型血缘提取器

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/dbt-model-lineage-extractor-2。

技能介绍

问题:dbt 的血缘并不直接摆在你面前

在 dbt 项目里,血缘通常被理解成 dbt Cloud 上那张可视化图。但在本地 CLI 或私有化环境里,这些信息其实散落在两处:dbt docs generate 产出的 manifest.json 构件里,每个节点的 depends_on 字段记录了上游依赖;而 ref() 和 source() 的语义本身又写在 Jinja 代码中。想画一张依赖图,或者排查某个模型改动会波及哪些下游,要么依赖 dbt Cloud 的界面,要么自己解析这份结构复杂的 JSON。前者对本地项目不可用,后者手工处理容易出错,也很难沉淀成可复用的脚本。

它如何工作:从两条构件路径提取

这个技能的思路是复用两条官方构件通道,而不是重写一套解析逻辑:

  • 本地构件:读取 manifest.json,定位类型为 model 的节点,从 depends_on 字段读出上游节点标识;
  • Cloud API:调用 dbt Cloud API v2,获取指定项目或环境下的 DAG 与节点依赖元数据。

提取过程大致分为几步:

  1. 载入构件,枚举目标节点,按需过滤掉 test、seed 等非模型节点;
  2. 解析每个节点 depends_on 中的 ref() 与 source() 语义,得到上游节点标识;
  3. 汇总为有向图,节点代表模型,边由上游指向下游;
  4. 将图结构交给 DAG 渲染与可视化环节。

适用边界与注意点

  • 本地路径依赖 manifest.json 的标准字段。如果项目结构变更后没有重新生成构件,提取出的血缘会滞后,建议提取前重新执行 dbt docs generate。
  • dbt Cloud API v2 路径需要有效的服务令牌,并受速率限制约束,适合跨项目汇总视图,不适合对大量本地仓库做批量刷新。
  • 宏生成的动态 ref()(通过变量传入不同模型名)可能让静态的 depends_on 指向不存在的节点,需要退回编译后的完整 manifest。
  • 按 tag 等条件筛选出的 DAG 子集并不等同于项目完整血缘,排查影响范围时要确认过滤条件是否合理。

使用场景

  • 在本地用 dbt docs generate 生成 manifest.json 后,需要提取当前项目所有模型的上下游依赖并绘制 DAG 图时。
  • 通过 dbt Cloud API v2 获取元数据时,需要解析 ref() 与 source() 调用以汇总跨项目的完整模型血缘关系。
  • 修改核心维度模型后,需要通过解析 manifest.json 快速定位受波及的下游指标模型与报表依赖列表。
  • 搭建数据资产文档站点时,需要将 dbt 项目的 DAG 血缘数据导出为结构化格式以供前端图表渲染。

适合人员

  • 数据工程师:需要在日常 dbt 模型开发与重构中,精准掌握模型上下游依赖以避免破坏下游指标。
  • 数据架构师:负责梳理复杂数据仓库的 DAG 架构,需要借助工具自动生成和维护全局模型血缘视图。
  • 数据分析负责人:在排查指标异常时,需要快速反向追溯上游数据模型和转换逻辑以定位问题源头。