1. 数据血缘基础:什么是数据血缘、为什么需要数据血缘、数据血缘的核心要素
大家好,我是老张。做数据治理这些年,我见过太多「数据出了问题,没人说得清源头在哪」的场面。今天咱们就聊聊数据血缘——这个听起来高大上、实际上每个数据人都绕不开的基础概念。
1.1 什么是数据血缘
说白了,数据血缘就是数据的「族谱」。它记录了数据从产生、流转、加工到最终消费的完整路径。就像你家户口本上写着谁是谁的爹妈,数据血缘告诉你这张报表里的数字是从哪个原始表、经过哪些计算得来的。
举个例子。你看到一张销售日报上写着「昨日成交额 1,283,456 元」。这个数字怎么来的?
- 从订单表里取数据
- 经过 ETL 清洗掉退款订单
- 按日期聚合求和
- 写入汇总表
- 最后被 BI 报表读取展示
这一整条链路,就是数据血缘。我习惯把它比作「数据的水管系统」——你拧开水龙头看到水,但水是从水库、经过水厂、穿过管道才到你这儿的。任何一个环节出问题,水都可能变脏或者断流。
1.2 为什么需要数据血缘
你可能要问:我数据跑得好好的,干嘛非要搞这个?嗯,我在项目中遇到过几次「血泪教训」,给你说说。
场景一:数据出问题,找不到根因
有一次,业务方说大屏上的 GMV 数据对不上。我们排查了整整两天,最后发现是上游一个字段映射错了。如果没有血缘关系,你只能靠人工一个个表去翻,跟大海捞针一样。
场景二:改表结构,不敢改
我记得有个同事想给订单表加个字段,但不知道下游有多少报表、接口依赖这个表。他不敢动,怕改坏了东西。后来我们做了血缘分析,发现 37 个下游任务依赖这张表——有了这个清单,改起来心里就有底了。
场景三:数据质量评估,没有抓手
你想想看,一个数据质量规则该设在哪里?是源头表、中间表还是最终报表?没有血缘,你根本不知道哪个节点最关键。有了血缘,你可以在关键路径上设质量门禁,事半功倍。
总结下来,数据血缘的价值就三点:
| 价值维度 | 具体说明 | 我见过的典型场景 |
|---|---|---|
| 问题溯源 | 数据异常时快速定位根因 | 报表数据对不上,2 小时定位到源头字段映射错误 |
| 变更影响分析 | 修改上游时评估下游影响范围 | 加字段前发现 37 个下游依赖,提前通知各方 |
| 数据质量治理 | 在关键节点设置质量监控 | 在核心 ETL 节点设规则,拦截了 90% 的脏数据 |
1.3 数据血缘的核心要素
数据血缘不是玄学,它由三个基本要素构成。我习惯叫它们「血缘三件套」。
1.3.1 表(Table)
表是数据的基本容器。在血缘关系里,表分为三类:
- 源表:数据的最初来源,比如业务库里的订单表、用户表
- 中间表:ETL 过程中产生的临时表或汇总表
- 目标表:最终提供给应用消费的表,比如报表宽表、大屏数据表
我曾经见过一个项目,中间表多达 200 多张,层层嵌套。没有血缘关系,你根本理不清哪张表是干嘛的。后来我们给每张表打了标签(源表/中间表/目标表),血缘图才清晰起来。
1.3.2 字段(Column)
字段是血缘的最小粒度。很多时候,问题就出在字段级别。
举个例子:
- 源表字段
order_amount(订单金额,单位:分) - ETL 中除以 100 转为元,写入
amount_yuan - 报表读取
amount_yuan展示
如果 ETL 里忘了除以 100,报表上的金额就放大 100 倍。字段级别的血缘能精确告诉你:amount_yuan 的值是从 order_amount 经过 /100 计算得来的。
1.3.3 ETL 任务(ETL Job)
ETL 任务是数据流转的「搬运工」。它定义了数据从哪张表来、经过什么逻辑处理、写到哪张表去。
一个典型的 ETL 任务包含:
- 输入:读取哪些源表/字段
- 处理逻辑:SQL 脚本、存储过程、Spark 作业等
- 输出:写入哪些目标表/字段
我习惯把 ETL 任务看作血缘的「关节」——它连接了上下游的表和字段。没有 ETL 任务,表与表之间就是孤岛,血缘关系就串不起来。
1.4 数据血缘的完整结构
把上面三个要素串起来,就构成了数据血缘的完整结构。我画了一张图,帮你直观理解:
1.5 数据血缘的粒度选择
做血缘不是越细越好。我见过有人一上来就想做字段级血缘,结果项目搞了半年还没上线。你得根据实际情况选粒度。
| 粒度 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 表级 | 快速了解数据流转概览 | 实现简单,成本低 | 无法定位到具体字段 |
| 字段级 | 精准定位数据问题 | 精确到字段,排查效率高 | 实现复杂,维护成本高 |
| 任务级 | ETL 任务依赖分析 | 看清任务上下游关系 | 不涉及字段细节 |
1.6 本章小结
数据血缘不是什么高深的技术,它就是数据的「族谱」。记住三个核心要素:
- 表:数据的容器,分源表、中间表、目标表
- 字段:血缘的最小粒度,问题排查的关键
- ETL 任务:连接上下游的「关节」,定义了数据怎么变
这三个要素串起来,就是一条完整的数据血缘链路。后面几章,我会带你看看怎么在实际项目中落地这些概念,包括怎么采集血缘、怎么可视化、怎么跟数据质量结合。咱们一步步来。