数据血缘与影响分析
血缘刻画表与字段之间的上下游依赖,来源有两类:SQL 解析(解析建表与插入语句里的来源表与字段)与调度依赖(任务之间的先后关系),必要时人工补充。它的实用价值有三个:变更前评估影响面(删字段、改口径会波及谁)、故障时定位受损范围、找数时看清来源链路。血缘的质量取决于覆盖面——动态 SQL 拼接、存储过程、脚本化加工往往解析不出来,这是补全血缘的重点。
基本信息
| 粒度 | 表级与字段级,字段级更适合变更评估 |
|---|---|
| 来源 | SQL 解析、调度依赖、人工补充 |
| 主要用途 | 变更影响分析、故障溯源、找数与口径追溯 |
| 维护方式 | 与任务发布联动更新,新增表上线即登记 |
| 常见盲区 | 动态 SQL 拼接、存储过程、脚本化加工 |
典型使用场景
- 删字段或改类型前,拉出受影响的下游任务与报表清单
- 故障排查:从异常表向上回溯到引入问题的任务
- 找数:看清某指标从哪些源表经过几层加工得到
- 下线废弃表:确认没有下游引用后再关闭任务
- 合规审计:证明某类数据的来源与流转路径
血缘查询思路
血缘查询思路
-- 从血缘表查某表的上游与下游(表结构按平台调整)
SELECT task_id, table_name, direction
FROM lineage_edges
WHERE table_name = 'dwd_trade_order_detail_di';
-- direction: upstream 上游 / downstream 下游
-- 变更前:统计下游影响面(例如字段级改动)
SELECT l.downstream_table, t.owner, t.schedule
FROM lineage_edges l JOIN meta_table t ON l.downstream_table = t.table_name
WHERE l.table_name = 'dwd_trade_order_detail_di' AND l.direction = 'downstream';血缘来源与可靠性
| 来源 | 覆盖面 | 可靠性 | 补充方式 |
|---|---|---|---|
| SQL 解析 | 静态 SQL 覆盖好 | 高 | 动态 SQL 需人工登记 |
| 调度依赖 | 任务级覆盖全 | 中,只到表级 | 结合字段级血缘 |
| 人工登记 | 补充解析不到的部分 | 取决于维护 | 纳入上线检查清单 |
改表前先看下游:字段删除或类型变更前,把受影响的任务与报表列成清单逐项确认,比事后补救成本低得多。
动态 SQL 拼接导致血缘解析不出来,下游清单不完整;这类任务要在上线检查里人工登记依赖,否则变更评估会漏项。
只做表级血缘时,字段改名的影响评估仍要靠人工;如果平台支持字段级解析,优先用它,能直接给出要改的任务列表。