用途:在修改 dbt 模型前评估“爆炸半径”,判断改动会破坏哪些下游对象,找出某模型或某列的全部消费方,评估重构风险。仅做只读分析,不用于创建或修复模型(应使用 dbt-develop 或 dbt-troubleshoot),也不用于添加测试(应使用 dbt-test)。
主要能力:
- 识别变更模型:可从 git diff --name-only | grep '.sql$' 自动检测,或用 altimate-dbt compile --model <name> 验证模型是否存在。
- 映射依赖图:altimate-dbt children --model <name> 查直接下游,altimate-dbt parents --model <name> 查上游;对每个下游模型递归调用 children 可得到完整下游树。
- 列级血缘:有 manifest 时优先用 dbt_lineage(model: <model_name>),读取 manifest.json,提取编译后 SQL 与上游 schema,通过 Rust 引擎追踪列流动,能解析 ref() 与 source() 到真实 schema,比原始 SQL 血缘更准确。无 manifest 时回退到 lineage_check 分析原始 SQL,查看源列到输出列的流向及列的增删改名;还可用 altimate_core_extract_metadata 提取引用的表、列、CTE、子查询等结构元数据。
- 与下游交叉比对:逐个读取下游模型 SQL,检查是否引用被改动或删除的列,并将影响分类为 BREAKING(下游使用了被删除或改名的列,发布前必须修复)、SAFE(新增列且下游未引用,可放心发布)、UNKNOWN(动态 SQL 或宏导致无法判断,需人工复核)。
- 生成影响报告:列出变更模型、列数量变化与改名情况、各深度下游影响及修复建议、受影响的测试,并给出摘要与推荐修复顺序,例如先修 int_order_metrics,再执行 altimate-dbt build --model stg_orders --downstream。
使用方式:该技能以 bash 运行 altimate-dbt 命令,并配合 read、glob、dbt_manifest、lineage_check、dbt_lineage、sql_analyze、altimate_core_extract_metadata 等工具;Agent 类型不限,属只读分析。
适用场景:变更前评估下游影响、查找模型或列的消费方、评估重构风险。
限制与注意事项:无 manifest 时只能做 SQL 级血缘,无法得到完整下游影响,需先运行 altimate-dbt build 生成 manifest。常见错误包括只查直接下游而不递归追踪完整下游树、忽略测试影响、未构建下游就发布、忽略改名(改名等于删除加新增,下游仍引用旧名)。更多 CLI 细节与血缘输出解读可参考 references/altimate-dbt-commands.md 与 references/lineage-interpretation.md。