数据血缘
问题
什么是数据血缘?为什么重要?
答案
什么是数据血缘
数据血缘(Data Lineage)记录数据从哪来、经过什么处理、到哪去的完整链路。
血缘的价值
| 场景 | 如何使用血缘 |
|---|---|
| 影响分析 | 源表字段变更 → 追踪影响了哪些下游表和报表 |
| 问题排查 | 看板数据异常 → 向上追溯到出错的 ETL 节点 |
| 成本治理 | 找出无人使用的表 → 下线释放资源 |
| 合规审计 | 敏感数据追溯 → 满足 GDPR 要求 |
血缘采集方式
| 方式 | 原理 | 工具 |
|---|---|---|
| SQL 解析 | 解析 SQL 中的表/字段依赖 | Apache Atlas、DataHub |
| 调度依赖 | 从 Airflow DAG 中提取上下游 | Airflow Lineage |
| dbt 自动 | dbt 的 ref() 自动建立血缘 | dbt docs |
| 手动标注 | 人工维护 | Excel/Wiki |
dbt 天然的血缘
dbt 通过 ref('model_name') 引用模型,自动生成完整的 DAG 血缘图,运行 dbt docs generate 即可查看。
常见面试问题
Q1: 血缘可以做到字段级别吗?
答案:
- 表级血缘:追踪表与表的依赖(大多数工具默认支持)
- 字段级血缘:追踪某个字段来自哪个源字段(更精细)
- 字段级血缘需要深度 SQL 解析,工具如 Apache Atlas、OpenLineage 支持
Q2: 如何利用血缘做成本治理?
答案:
- 从血缘图中找出叶子节点(无下游依赖的表)
- 结合查询日志,找出 30+ 天无人查询的表
- 通知负责人确认后下线,释放存储和计算资源