1. 数据血缘基础概念:什么是数据血缘、数据血缘与数据地图的区别、数据血缘的核心要素
各位同学好,我是老张。今天咱们开始第一讲,聊聊数据血缘最基础的东西。说实话,我做了十几年数据治理,见过太多团队一上来就搞血缘工具,结果连基本概念都没对齐,最后搞成一锅粥。所以这一章,咱们把地基打牢。
1.1 什么是数据血缘
数据血缘,说白了就是数据的“族谱”。它记录了一条数据从哪来、经过哪些加工、最终去了哪里的完整路径。
我习惯用一个比喻来理解:你手里有一杯牛奶,你想知道这杯牛奶是哪个牧场的奶牛产的、经过了哪些运输环节、在哪个工厂灌装的、最后怎么到了你手上。数据血缘干的就是这件事——只不过对象换成了数据。
核心定义:数据血缘是描述数据在产生、处理、流转、消亡全过程中,数据项之间依赖关系的元数据。
举个例子,你在报表里看到一个“当日销售额”字段,数据血缘能告诉你:
- 这个字段来自订单表的
amount字段 - 经过了
SUM聚合和WHERE status = '已完成'过滤 - 最终写入了
daily_sales_summary表
嗯,这里要注意:数据血缘不是数据流图。数据流图关注的是“数据怎么流动”,而血缘关注的是“数据之间的依赖关系”。
1.2 数据血缘与数据地图的区别
这个问题我每次培训都会被问到。很多人觉得这俩差不多,其实差别挺大。我直接给个对比表,大家一看就明白:
| 对比维度 | 数据血缘 | 数据地图 |
|---|---|---|
| 核心关注点 | 数据之间的依赖关系 | 数据资产的分布与位置 |
| 粒度 | 字段级、表级 | 表级、库级、系统级 |
| 典型用途 | 影响分析、问题溯源、合规审计 | 数据发现、数据目录、资产管理 |
| 是否记录转换逻辑 | 是(包含ETL规则、计算逻辑) | 否(仅记录元数据基本信息) |
| 动态性 | 随数据加工过程实时变化 | 相对静态,定期更新 |
| 合规审计价值 | 高(可直接用于追溯数据来源) | 低(仅能定位数据位置) |
你看,数据地图更像是“图书馆的索引”,告诉你哪本书在哪个架子上。而数据血缘是“这本书的参考文献列表”,告诉你每段内容引自哪里、经过哪些修改。
我曾经在一个项目中,客户非要拿数据地图来做合规审计,结果审计员问“这个字段的原始数据来源是哪个系统”,地图上根本查不到。最后我们补了血缘关系,才把审计应付过去。所以,做合规审计,必须上数据血缘。
1.3 数据血缘的核心要素
数据血缘有三个核心要素:来源、转换、去向。我习惯叫它“血缘三角”。
我的经验:在项目中,只要把这三个要素理清楚,血缘关系就完成了80%。剩下的20%是细节填充和自动化采集。
1.3.1 来源(Source)
来源就是数据的“出生地”。它可以是:
- 源系统:比如CRM系统、ERP系统、日志采集系统
- 源表/文件:比如
orders表、user_log.csv文件 - 源字段:比如
orders.amount、user_log.event_time
在合规审计中,来源信息至关重要。审计员会问:“这个报表里的客户手机号,原始数据是从哪个系统采集的?”如果你答不上来,那就是合规问题。
1.3.2 转换(Transformation)
转换是数据在流转过程中经历的加工逻辑。这是血缘关系中最复杂、也最有价值的部分。
常见的转换类型包括:
- 字段映射:源字段A → 目标字段B(直接对应)
- 聚合计算:SUM、COUNT、AVG 等
- 过滤清洗:WHERE 条件、NULL 处理、去重
- 业务规则:比如“VIP用户打8折”这样的逻辑
- 格式转换:日期格式统一、编码转换
举个例子,一个简单的ETL脚本:
-- 源表:raw_orders
-- 目标表:daily_sales
INSERT INTO daily_sales (sale_date, total_amount)
SELECT
DATE(order_time) AS sale_date,
SUM(amount * (1 - discount_rate)) AS total_amount
FROM raw_orders
WHERE status = 'completed'
GROUP BY DATE(order_time);
这段代码的血缘关系是:
- 来源:
raw_orders.order_time、raw_orders.amount、raw_orders.discount_rate、raw_orders.status - 转换:
DATE()函数、SUM()聚合、amount * (1 - discount_rate)计算、WHERE status = 'completed'过滤、GROUP BY分组 - 去向:
daily_sales.sale_date、daily_sales.total_amount
避坑指南:我曾经在一个项目中,ETL脚本里有个隐式的类型转换(字符串转数字),血缘工具没采集到。结果审计时发现某个字段的值异常,查了半天才发现是转换逻辑没记录。所以,所有转换逻辑,哪怕再简单,都要显式记录到血缘中。
1.3.3 去向(Target)
去向是数据的“最终归宿”。它可以是:
- 目标表/视图:比如报表表、数据仓库表
- 下游应用:比如BI报表、数据API、机器学习模型
- 数据产品:比如数据大屏、客户画像
在合规审计中,去向信息用于影响分析。比如,你发现某个源系统的数据有质量问题,需要知道“哪些报表和业务系统受到了影响”。这时候,血缘关系中的去向信息就能帮你快速定位。
1.4 数据血缘的完整结构图
下面这张图展示了数据血缘的完整结构,我建议你保存下来,后面章节会反复用到:
1.5 为什么合规审计离不开数据血缘
你想想看,审计员最常问的问题是什么?无非就是:
- “这个数据从哪来的?”(来源)
- “中间经过了哪些处理?”(转换)
- “最终用在了哪里?”(去向)
这不就是数据血缘的三个核心要素吗?所以我说,数据血缘是合规审计的“基础设施”,没有它,审计工作寸步难行。
我记得有一次配合外部审计,对方要求提供某个敏感字段的完整数据流转链路。我们当时已经建好了血缘关系,直接导出链路图,审计员看了一眼就过了。隔壁团队没做血缘,被要求补了三个月的材料,最后还被开了整改项。
我的建议:如果你所在的企业正在做数据合规建设,优先把数据血缘建起来。哪怕一开始只覆盖核心业务表,也比没有强。后面咱们会讲到怎么一步步搭建血缘体系。