Article body
正文
引言
一个大型企业的 BI 系统里,可能有 200 张数据集、500 个指标、800 个仪表盘和 3000 张报表。指标依赖数据集字段,仪表盘引用指标,报表又嵌入仪表盘中的图表。这些资产共同构成一张依赖网。
某个字段改名后,下游指标可能同时报错,其中一些指标还支撑着管理层的经营看板。如果团队直到例会前才发现问题,就只能在压力下逐层排查。
数据血缘(Data Lineage)记录数据从源头到消费端的流转路径,让团队在变更前看清影响范围,在故障发生后定位上游原因。 衡石 BI 在指标管理平台和数据集体系中提供血缘图谱与影响分析能力。本文介绍其分层模型、图谱计算和工程应用。
一、数据血缘解决哪些问题
1.1 三类常见风险
变更缺少感知
数据中台修改字段类型后,BI 侧依赖该字段的指标可能查询失败。上下游团队如果看不到依赖关系,只能在故障发生后临时对齐信息。
故障难以定位
看板上的 KPI 突然变为 0,原因可能来自数据源、ETL 任务、指标口径或报表配置。缺少血缘信息时,排查人员需要从展示层逐级回溯。
影响范围无法评估
一个看似无人使用的数据集,可能被多个核心指标间接引用。直接下线会让依赖这些指标的日报和看板失效。
1.2 血缘的业务价值
数据血缘把隐藏的依赖关系整理为可查询的图谱:
- 变更前:评估字段、指标或数据集调整会影响哪些看板和用户
- 故障中:从异常指标向上追溯,定位最早出现问题的节点
- 下线前:确认没有下游依赖,再安全删除资产
二、衡石 BI 血缘体系的四层模型
衡石 BI 用多层网络表达数据从源头到消费端的完整路径。
2.1 物理血缘:数据源到数据集
物理血缘记录数据集读取了哪些数据源、表和字段。
系统通过以下方式采集依赖:
- 解析数据集 SQL,提取源表和源字段
- 读取可视化模型中的字段映射
- 记录实时数据流消费的 Topic 与分区
血缘粒度精确到字段。例如,系统记录“数据集 A 的字段 X 来自表 B 的字段 Y”,而不只记录数据集与表之间的关系。
2.2 语义血缘:数据集到指标
语义血缘记录指标定义依赖的数据集、字段和计算逻辑。
系统采集以下关系:
- 指标管理平台中声明的来源数据集
- 指标表达式引用的字段
- 派生指标与基础指标之间的依赖,例如净利率对净利润和营收的依赖
AI 生成的指标也进入语义血缘。系统保留生成该指标时使用的数据集、字段和计算依据,便于后续审查。
2.3 消费血缘:指标到看板与报表
消费血缘记录仪表盘、报表、图表、订阅和告警规则引用了哪些指标。每个消费资产通过稳定的指标 ID 建立关联,团队可以从任一指标查到所有直接和间接使用者。
2.4 用户血缘:看板与报表到用户和角色
用户血缘结合看板权限和订阅关系,记录哪些用户、角色能够访问引用了特定指标的内容。
当指标出现质量问题时,团队既能找到受影响的看板,也能确定需要通知的用户范围。
三、血缘图谱的存储与计算
3.1 图模型
衡石 BI 可以使用图数据库,也可以用关系型数据库的邻接表表达血缘。
图谱包含两类基本元素:
- 节点(Node):数据源表、字段、数据集、指标、看板、报表和用户
- 边(Edge):物理依赖、语义依赖、消费引用和用户权限
每个节点都有唯一标识和类型标签。每条边记录依赖类型及字段映射、指标引用等属性。
3.2 上下游遍历
血缘分析包含两个核心查询。
向上游回溯(Upstream Tracing)
系统从异常指标或图表出发,沿依赖关系反向遍历,找到可能导致异常的上游节点。实现时可采用广度优先搜索(BFS),并限制搜索深度,避免无关路径扩大结果集。
向下游影响分析(Downstream Impact Analysis)
系统从待变更的字段或资产出发,沿依赖方向遍历所有下游节点,并按距离分为直接影响、间接影响和远端影响。
3.3 增量更新与版本快照
数据集、指标和看板持续变化,血缘图谱需要随资产一起更新:
- 监听数据源表结构变更,更新物理血缘
- 在指标定义修改后重算语义血缘
- 在看板保存后更新消费血缘
- 在重大变更前保存血缘快照,对比变更前后的依赖差异
四、影响分析的工程实践
4.1 变更前预览影响范围
用户修改数据集字段时,系统先执行下游影响分析,并返回受影响的指标、看板和用户。例如,一个字段被三个指标引用,其中一个指标支撑两张管理看板,团队可以据此决定继续修改、先通知使用者或暂缓变更。
影响报告还可以按业务重要性排序,把管理看板、部门看板和个人看板分层展示,帮助团队先处理影响较大的资产。
4.2 输出故障根因路径
看板出现异常后,运维人员可以从图表节点向上回溯,依次检查图表配置、指标、数据集和源表。系统在第一个异常节点停止,并输出类似“看板 → 指标 → 数据集 → 已删除源表”的根因路径。
血缘图谱把多小时的人工逐层排查收敛为一条可验证的依赖链。
4.3 下线前执行安全检查
系统在删除数据集或指标前执行下游影响分析:
- 存在直接或间接依赖时,阻止删除并列出受影响资产
- 确认没有下游依赖时,允许执行安全删除
图谱构建阶段还需要检测循环依赖。如果 A 依赖 B、B 依赖 C、C 又依赖 A,系统应提示配置错误,避免遍历陷入循环。
五、血缘如何支持数据治理
5.1 数据质量监控
团队可以在核心源表和指标上配置空值率、范围、一致性等质量规则。上游出现异常后,系统沿血缘向下游传播质量警告,并在引用异常指标的看板上提示数据风险。
5.2 合规审计
金融、政务等强监管行业可以借助血缘完成三类审计:
- 追溯报表数字从源表到展示层的完整计算路径
- 跟踪敏感字段被哪些下游资产引用,并核对脱敏策略
- 记录血缘变更的操作者、时间和影响范围
5.3 指标生命周期管理
消费血缘可以统计指标被多少看板引用、被多少用户访问。长期没有引用的指标可标记为疑似废弃;下线前,系统再次检查依赖并提示迁移。新建指标时,语义血缘还能帮助团队检索相近定义,减少重复指标。
六、常见问题与设计建议
6.1 血缘只做到表级
表级血缘无法判断一个字段变更是否真正影响下游,容易产生大量误报。字段级映射可以区分已引用字段和未引用字段,让影响范围更准确。
6.2 依赖人工维护
手工填写的依赖关系会随着配置变化而过期。系统应从 SQL、模型配置和资产变更事件中自动采集血缘,减少人工同步成本。
6.3 影响报告缺少优先级
底层表的下游节点可能很多。报告需要结合资产等级、使用人数和业务场景排序,帮助用户先处理管理看板和核心指标。
七、总结
当企业拥有数百个指标和上千张看板时,团队无法靠记忆维护所有依赖。衡石 BI 用物理、语义、消费和用户四层血缘连接数据源与最终用户,并通过自动采集保持图谱更新。
这套图谱支持变更前预览、故障根因追踪和安全下线,也为数据质量、合规审计和指标治理提供统一的依赖依据。团队因此能在修改资产前看清范围,在出现异常后沿已知路径排查。