4、根因分析(RCA)方法论:5Why分析法、鱼骨图、因果矩阵、故障树分析(FTA)

数据质量出问题了,第一反应是什么?

很多人会急着修数据、补代码、重启任务。但说实话,这只是在「救火」。火灭了,根子还在。下次换个场景,同样的坑你还会再踩一遍。

我做了这么多年数据治理,最深的体会就是:找不到根因的复盘,都是走过场。今天我们就来聊聊 RCA 的四种核心武器——5Why、鱼骨图、因果矩阵、故障树。每一种我都用过,也踩过坑,希望能帮你少走弯路。

核心观点:根因分析不是找「谁错了」,而是找「系统为什么允许这个错发生」。别把 RCA 做成追责会。

根因分析(RCA)方法论全景图 数据质量事故 5Why 分析法 鱼骨图 因果矩阵 故障树分析 追问式 连续追问「为什么」 直达根本原因 适合简单问题 发散式 从人机料法环展开 可视化因果链条 适合复杂问题 量化式 给原因打分排序 聚焦高影响因子 适合多因素问题 演绎式 自上而下逻辑分解 适合高可靠性场景 如金融、医疗 选择建议 简单问题用 5Why → 复杂问题用鱼骨图 → 多因素排序用因果矩阵 → 高安全场景用故障树

4.1 5Why分析法:追问到底,直到真相

5Why 是 RCA 里最基础、也最容易被用歪的方法。说白了,就是连续问「为什么」,直到你找到那个可以采取行动的根本原因。

我见过很多团队做 5Why,问了两三个「为什么」就停了,然后说「哦,是开发写错了代码」。这不对。写错代码只是直接原因,不是根因。

给你看个真实例子。有一次我们线上数据延迟了 4 个小时:

  1. 为什么数据延迟? → 因为凌晨的批处理任务失败了。
  2. 为什么任务失败? → 因为源系统接口超时。
  3. 为什么接口超时? → 因为源系统当天做了版本升级,接口参数变了。
  4. 为什么版本升级没通知我们? → 因为变更管理流程里没有数据团队。
  5. 为什么变更管理流程没有数据团队? → 因为组织架构调整后,数据团队归属变了,流程没更新。

你看,到第 5 个「为什么」,我们才找到真正的根因——流程治理缺失。修接口参数只是治标,更新变更管理流程才是治本。

我的经验:5Why 的关键不是「问够 5 次」,而是「问到能采取系统性改进为止」。有时候 3 次就够了,有时候需要 7 次。别死守数字。

避坑指南:我曾经见过一个团队做 5Why,问到第 3 次就指向了「某员工疏忽」。然后他们就把这个人调岗了。这其实是把 RCA 做成了甩锅。记住:根因必须是系统层面的,不是个人层面的。

4.2 鱼骨图:把复杂问题拆开看

当问题涉及多个维度时,5Why 就不够用了。你想想看,一个数据质量事故,可能同时涉及数据源、ETL 脚本、监控告警、人员操作、环境配置……这时候鱼骨图就派上用场了。

鱼骨图也叫因果图,或者 Ishikawa 图。它的核心思路是:从「人机料法环」五个维度去发散找原因。

我习惯在复盘会上先画鱼骨图。拿一张白板,左边画鱼头(问题描述),右边画主骨,然后拉出五根大刺:

维度 常见数据质量问题原因 举例
人(Man) 操作失误、培训不足、沟通不畅 开发误删分区表
机(Machine) 硬件故障、资源不足、配置错误 磁盘写满导致任务失败
料(Material) 源数据异常、上游变更、数据格式不符 上游字段类型从 int 改成 string
法(Method) 流程缺失、规范不完善、校验不足 没有数据质量监控规则
环(Environment) 网络波动、依赖服务不可用、环境差异 测试环境和生产环境配置不一致

每个维度下再继续细分,直到把所有可能的原因都列出来。这样做的好处是:不会遗漏。而且大家在一起画图的过程,本身就是一次很好的团队对齐。

我的习惯:鱼骨图画完后,我会让每个人贴三个红点,投出他们认为最可能的原因。这样就能快速收敛,把精力聚焦在关键因子上。

4.3 因果矩阵:给原因排个优先级

鱼骨图列出来的原因可能有一大堆。但资源有限,不可能全修。这时候就需要因果矩阵来帮忙——用量化的方式给原因排序。

因果矩阵的做法很简单:

  1. 列出所有可能的原因(从鱼骨图里拿)
  2. 列出几个关键的结果指标(比如数据延迟、数据准确率、用户投诉数)
  3. 给每个原因对每个结果的影响程度打分(1-5 分)
  4. 加权求和,排优先级

举个例子,我们之前处理过一个「报表数据不准」的问题:

可能原因 数据准确率(权重 5) 数据时效性(权重 3) 用户满意度(权重 4) 总分
上游字段变更未通知 5 2 4 5×5 + 2×3 + 4×4 = 47
ETL 脚本逻辑错误 4 3 3 4×5 + 3×3 + 3×4 = 41
监控告警延迟 2 5 3 2×5 + 5×3 + 3×4 = 37
数据源网络抖动 3 4 1 3×5 + 4×3 + 1×4 = 31

你看,排第一的是「上游字段变更未通知」。那我们的改进措施就应该优先解决这个问题——比如建立上游变更感知机制。

我的建议:打分的时候别一个人拍脑袋。拉上开发、测试、运维、业务方一起打分,取平均值。这样能避免个人偏见。

4.4 故障树分析(FTA):自上而下的逻辑推演

FTA 是 RCA 里最严谨的方法。它用逻辑门(与门、或门)把故障事件一层层分解,直到找到最基本的失效原因。

说实话,FTA 在数据治理领域用得不算多。但在金融、医疗、航天这些高可靠性场景里,它是标配。我当年在金融科技公司的时候,每次核心账务系统出问题,都必须做 FTA。

FTA 的核心逻辑是:

  • 顶事件:你要分析的故障(比如「对账不平」)
  • 中间事件:导致顶事件的子故障
  • 底事件:最基本的、不可再分的原因
  • 逻辑门:与门(所有子事件都发生才触发)、或门(任一子事件发生就触发)

举个例子,假设「对账不平」是顶事件:

顶事件:对账不平
  ├── 或门:数据源不一致
  │   ├── 底事件:上游系统未按时推送
  │   └── 底事件:推送数据格式错误
  └── 与门:计算逻辑错误
      ├── 底事件:对账规则配置错误
      └── 底事件:脚本版本未更新

注意看,这里「数据源不一致」用的是或门——只要其中一个发生,就会导致对账不平。而「计算逻辑错误」用的是与门——两个条件都满足才会触发。这个区别很重要,它决定了你后续的改进策略。

避坑指南:我曾经犯过一个错——把 FTA 画得太细,底事件拆到了「某行代码的某个变量」。结果分析报告写了 30 页,没人看得完。FTA 的粒度要控制在「能采取独立改进措施」的层面,别钻牛角尖。

4.5 四种方法怎么选?

说了这么多,你可能会问:到底用哪个?

我的经验是:没有最好的方法,只有最合适的方法。给你一个简单的选择指南:

场景 推荐方法 理由
问题简单,原因链条清晰 5Why 快速、直接、不绕弯子
问题复杂,涉及多个维度 鱼骨图 全面、可视化、适合团队讨论
原因多,需要排优先级 因果矩阵 量化、客观、聚焦高价值改进
高可靠性场景,需要严谨论证 故障树分析 逻辑严密、可追溯、可验证
实际工作中 组合使用 先用鱼骨图发散,再用因果矩阵排序,最后用 5Why 深挖关键原因

我的实战组合拳:复盘会上,先花 30 分钟画鱼骨图,让所有人把想法倒出来。然后每人投三票,选出 Top 5 原因。接着用因果矩阵给这 5 个原因打分排序。最后对排名前 2 的原因做 5Why 深挖。这套流程我用了好几年,效率很高。

嗯,RCA 的方法论就聊到这儿。记住一句话:根因分析不是为了证明谁错了,而是为了让系统不再犯错。下次做复盘的时候,试试这些方法,你会发现数据质量事故其实没那么可怕——只要你能找到根因,改进措施就有了方向。