一句话回答
数据血缘是数据从来源经过每一步加工、到达使用它的报表和系统的完整路径记录,可以细到表、字段或业务指标,用于根因分析、影响分析、审计和合规。
什么是数据血缘?
数据血缘(Data Lineage)记录一份数据从哪里来、途中经过了哪些处理、最后到了哪里。对看板上的一个数字,血缘回答的是:它由哪些事件或源表构成,经过了哪些任务的加工,用了哪些筛选和口径,还有哪些报表在复用它。
血缘可以记录到不同粒度:
- 表或数据集级: 这个看板读表 B,表 B 由表 A1 和 A2 生成。
- 字段级:
revenue字段等于order_total减refund_amount,再换算成美元。 - 业务级: 「周活跃用户」指过去 7 天至少有一次有效事件的人,由产品分析组负责。
为什么需要数据血缘
| 用途 | 血缘回答的问题 | 例子 |
|---|---|---|
| 根因分析 | 这个数为什么变了? | 周活跃下降 18%:往上游追,是某个 App 版本在 iOS 上不再发某个事件 |
| 影响分析 | 改了这个会弄坏什么? | 把属性 plan 改名,会影响 3 个看板、1 个漏斗和一封周报邮件 |
| 信任和审计 | 这个数能信吗? | 财务能看到「收入」不含退款和税 |
| 隐私和合规 | 个人数据流到了哪里? | 邮箱字段流进了一个本不该拿到它的导出任务 |
| 成本和清理 | 还有人用吗? | 没有任何下游使用的表可以下线 |
计算示例:追溯一个指标
典型分析链路里「网站周活跃用户」的血缘(示例):
| 步骤 | 系统 | 发生了什么 | 可能出什么问题 |
|---|---|---|---|
| 1 | 浏览器脚本 | 访客操作时发送浏览或事件 | 脚本被屏蔽,新页面没装 |
| 2 | 采集接口 | 校验并接收请求 | 域名没登记、额度用完、被判为机器人 |
| 3 | 事件库 | 写入原始事件:时间、访客 ID、属性 | 时钟偏差,属性被校验规则丢弃 |
| 4 | 每日人表 | 把事件汇总成每人每天一行 | 事件没被算作「活跃」 |
| 5 | 指标定义 | 统计过去 7 天活跃的去重人数 | 口径改了,时间窗或时区改了 |
| 6 | 看板和报表 | 展示指标、对比时间段 | 看板上保存了错误的筛选 |
周活跃下降时,从表的最后一行往上查:口径或筛选改过吗?每日汇总排除了什么吗?原始事件变少了吗?如果变少,是在采集端被拒了,还是根本没发出来?每一步要么解释了下降,要么排除了自己。
数据血缘和相关概念
- 数据溯源(provenance)范围更窄:某一条记录的来源和历史,多用于审计或科研。血缘覆盖整条链路。
- 数据字典定义每个字段是什么意思;血缘展示字段之间怎么连接。
- 数据可观测性在生产环境监控新鲜度、数据量和结构;血缘告诉你异常从哪来、会影响什么。
- 数据治理定规则和归属;血缘是让这些规则可检查的工具之一。
血缘怎么采集
- 解析代码和查询。 SQL 和加工代码能看出哪些表、哪些字段流向哪里。
- 读取平台元数据。 数据仓库、调度工具和 BI 工具会记录读写。
- 在模型里声明。 数据加工框架会根据你写的模型生成依赖图。
- 人工记录。 在埋点这一层,埋点方案就是血缘的上游起点:哪个事件来自哪个页面、平台和版本。
自动血缘对能解析的代码很准,但会漏掉表格、手工复制这类人工步骤,两种都要考虑。
常见错误
- 把血缘当成画图项目。 出事时没人用的图,几周就过时。先从管理层天天看的三四个指标做起。
- 只做到数据仓库为止。 很多数据问题出在采集阶段:埋点代码、用户同意、脚本屏蔽。要把埋点层包括进来。
- 没有负责人。 血缘里每个节点都要有可以问的人或团队。
- 忽略口径。 两个看板用的表完全一样,也可能对不上,因为一个数会话、一个数人。
在 TapCub 里
TapCub 不画血缘图,但把统计数据最常丢失的几个环节摆了出来。埋点方案记录每个事件的平台、触发方式、属性、负责人,以及从「待评审」到「已上线」的状态。数据质量页显示接收告警、按原因统计的采集拒收(域名不匹配、排除规则、额度、限流、格式错误、机器人)、被拦截的属性,以及不再上报的事件。指标意外波动时,这两个页面覆盖了上面血缘表的前几步。链路后面的部分,见数据管道和数据质量。
参考资料
- IBM. What is data lineage?
- OpenLineage. An open standard for lineage metadata collection.
- DAMA International. DAMA-DMBOK: Data Management Body of Knowledge, 2nd ed.(元数据管理章节).
这个解释清楚吗?
我们会根据反馈修改和补充这篇内容。
提交没有成功,请稍后再试。
谢谢你的反馈,我们会据此改进这篇内容。你已经反馈过这篇了,谢谢。
