4. 清洗规则概述:数据清洗的定义、清洗与校验的区别、常见清洗场景

在SRM系统中,供应商主数据是采购业务的核心基础。数据清洗并非简单的“删除错误数据”,而是一套系统化的质量提升工程。本节将明确数据清洗的定义,厘清其与数据校验的本质区别,并梳理SRM项目中最常见的清洗场景。

4.1 数据清洗的定义

数据清洗(Data Cleansing)是指检测并纠正(或删除)数据集中不准确、不完整、不合理或重复的记录的过程。在SRM供应商主字段场景下,清洗的目标是让每条供应商记录达到“唯一、准确、完整、一致”的状态。

核心公式:
数据清洗 = 问题识别 + 规则修正 + 标准化输出

清洗不是一次性活动,而是伴随供应商全生命周期的持续治理动作。典型的清洗对象包括:供应商名称拼写错误、统一社会信用代码格式混乱、银行账号缺失、联系人信息重复等。

4.2 清洗与校验的区别

数据校验(Validation)与数据清洗(Cleansing)经常被混淆,但两者在SRM数据治理中承担不同角色。下表从多个维度进行对比:

对比维度 数据校验(Validation) 数据清洗(Cleansing)
核心目标 判断数据是否符合预设规则 修正不符合规则的数据
执行时机 数据录入时(实时拦截) 数据入库后(批量处理)
输出结果 通过/不通过 + 错误提示 修正后的数据 + 清洗日志
典型动作 格式检查、必填项检查、唯一性检查 去重合并、格式统一、缺失值填充
对数据的影响 只读检查,不修改数据 直接修改或替换数据
SRM示例 校验供应商税号是否为18位 将15位旧税号统一转换为18位
讲师提示:在配置SRM数据质量规则时,建议将校验规则放在前端(如供应商门户注册环节),将清洗规则放在后端(如主数据导入或定期批量处理环节)。两者配合使用,才能形成完整的质量闭环。

4.3 常见清洗场景

SRM供应商主字段的清洗场景主要集中在以下三类:去重、格式化、补全。下面分别说明其定义、典型问题及清洗策略。

4.3.1 去重(Deduplication)

去重是指识别并合并供应商主数据中重复的记录。重复数据会导致采购订单混乱、应付账款重复支付、供应商绩效评估失真等问题。

  • 精确重复:两条记录的所有关键字段完全相同(如名称、税号、地址完全一致)。
  • 模糊重复:关键字段存在细微差异(如“华为技术有限公司” vs “华为技术公司”)。
  • 关联重复:同一供应商在不同系统中使用不同编码,但实际为同一实体。

去重清洗策略通常包括:建立相似度匹配规则(如编辑距离算法)、设置合并优先级(以最新或最完整记录为主)、生成合并审计日志。

4.3.2 格式化(Formatting)

格式化清洗是指将供应商字段的数据统一为预定义的标准化格式。不同来源的数据往往存在格式差异,影响系统集成和数据分析。

字段名称 常见格式问题 标准化目标格式
统一社会信用代码 含空格、全半角混用、大小写不统一 18位大写字母+数字,无分隔符
电话号码 缺少区号、含“-”或空格位置不统一 +86-区号-号码(国际格式)
银行账号 数字间有空格、位数不足或超长 纯数字,按银行标准补齐位数
供应商名称 含特殊符号、括号全半角混用 全角括号、去除首尾空格

4.3.3 补全(Completion)

补全清洗是指对供应商主数据中缺失的字段进行填充或推断。缺失字段会影响采购流程的自动化执行(如缺少付款条款导致无法自动结算)。

  • 规则补全:根据已有字段推导缺失值。例如,根据供应商所在城市自动补全邮政编码。
  • 默认值补全:对非关键字段设置业务默认值。例如,未填写“付款条款”时默认“月结30天”。
  • 外部数据补全:调用第三方数据源(如工商信息API)补充缺失的注册信息。
注意:补全清洗必须设置明确的业务规则和审批流程。对于关键字段(如税号、银行账号),不允许自动补全,必须由供应商或数据管理员确认后手动填写。

4.4 清洗场景关系图

下图展示了三种清洗场景在SRM供应商主数据治理中的关系与执行顺序:

SRM供应商主数据清洗场景关系图 原始供应商数据 去重 格式化 补全 清洗后标准数据 数据校验(规则检查) 高质量供应商主数据 清洗执行顺序建议 先执行去重 → 再执行格式化 → 最后执行补全

4.5 清洗规则配置示例

在SRM系统中,清洗规则通常通过配置界面或脚本实现。以下是一个简单的供应商名称格式化清洗规则示例:

-- 清洗规则:供应商名称标准化
-- 规则ID:CLN-001
-- 适用字段:supplier_name

UPDATE supplier_master
SET supplier_name = 
    -- 1. 去除首尾空格
    TRIM(
        -- 2. 将全角英文字母转为半角
        TRANSLATE(supplier_name, 
                  'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',
                  'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz')
    )
WHERE supplier_name IS NOT NULL
  AND supplier_name != TRIM(supplier_name)
  OR supplier_name LIKE '%[A-Za-z]%';
最佳实践:清洗规则配置完成后,建议先在测试环境对样本数据(约1000条)执行试运行,对比清洗前后的数据质量指标(如重复率、格式合规率、字段完整率),确认无误后再部署到生产环境。