2. 数据准备:采购订单数据、供应商主数据、价格清单数据的获取与清洗
供应商支出集中度分析与价格方差异常定位的准确性,高度依赖底层数据的质量。本章将系统讲解三类核心数据源的获取范围、字段标准与清洗规则,确保后续分析建立在干净、一致、可追溯的数据基础之上。
2.1 三类数据源的定义与获取范围
| 数据源 | 核心用途 | 关键字段 | 获取周期 |
|---|---|---|---|
| 采购订单数据 | 支出金额、采购量、单价、交易时间 | PO编号、供应商编码、物料编码、订单数量、单价、总金额、订单日期、收货日期 | 近3个完整财年 + 当前财年至今 |
| 供应商主数据 | 供应商分类、风险等级、合作状态 | 供应商编码、名称、所属集团、行业分类、注册地、信用等级、是否活跃 | 最新快照 + 历史变更记录 |
| 价格清单数据 | 标准参考价、合同价、历史成交价 | 物料编码、供应商编码、生效日期、失效日期、标准单价、合同单价、折扣率 | 覆盖分析时间窗口的全部版本 |
数据获取避坑提示: 采购订单数据务必包含已收货和已开票的订单,排除未完成或已取消的订单;供应商主数据需确认“集团级”与“工厂级”编码的映射关系,避免同一集团下不同法人实体被重复计数。
2.2 数据清洗的六大标准步骤
原始数据通常存在缺失、重复、格式不一致、业务逻辑异常等问题。以下清洗流程适用于三类数据源,建议按顺序执行:
- 字段完整性检查 — 检查关键字段(如供应商编码、物料编码、单价)是否为空,缺失率超过5%的字段需追溯源系统补录。
- 重复记录去重 — 以PO编号+行项目号为唯一键,保留最新时间戳的记录;供应商主数据以供应商编码去重。
- 格式标准化 — 统一日期格式为YYYY-MM-DD,金额字段保留两位小数,文本字段去除前后空格与特殊字符。
- 业务逻辑校验 — 单价不能为负数或零;订单数量必须为正整数;订单日期不得晚于收货日期。
- 异常值截断 — 对单价、数量等连续字段,按99.5%分位数截断极端值,避免个别异常订单扭曲集中度指标。
- 关联一致性校验 — 采购订单中的供应商编码必须在供应商主数据中存在;物料编码必须在价格清单中有对应记录。
关键指标: 清洗后的数据应满足:
• 字段完整率 ≥ 98%
• 重复记录率 ≤ 0.5%
• 业务逻辑通过率 ≥ 99%
• 关联匹配率 ≥ 95%
• 字段完整率 ≥ 98%
• 重复记录率 ≤ 0.5%
• 业务逻辑通过率 ≥ 99%
• 关联匹配率 ≥ 95%
2.3 数据清洗流程架构
下图展示了从原始数据到分析就绪数据的完整清洗链路,包含三个数据源的并行处理与最终合并节点:
2.4 价格方差异常的初步识别
在数据清洗完成后,可立即对价格清单与采购订单进行初步比对,标记出价格差异超过阈值的记录,作为后续深度分析的输入:
-- SQL示例:标记价格差异超过10%的采购订单行项目
SELECT
po.PO编号,
po.物料编码,
po.供应商编码,
po.单价 AS 订单单价,
pl.标准单价,
ROUND((po.单价 - pl.标准单价) / pl.标准单价 * 100, 2) AS 价格差异百分比,
CASE
WHEN ABS((po.单价 - pl.标准单价) / pl.标准单价) > 0.10 THEN '异常'
ELSE '正常'
END AS 差异标记
FROM 采购订单清洗表 po
LEFT JOIN 价格清单清洗表 pl
ON po.物料编码 = pl.物料编码
AND po.供应商编码 = pl.供应商编码
AND po.订单日期 BETWEEN pl.生效日期 AND pl.失效日期
WHERE po.订单日期 >= '2023-01-01';
注意: 价格差异标记为“异常”并不代表一定存在舞弊或错误,可能是由于批量折扣、紧急采购溢价、汇率波动等合理原因导致。此步骤仅用于定位候选异常,后续章节将结合供应商集中度与支出分布进行综合研判。
2.5 数据准备阶段交付物清单
| 交付物 | 内容说明 | 格式要求 |
|---|---|---|
| 采购订单清洗表 | 包含完整字段、去重、校验后的订单明细 | CSV / Parquet,按月份分区 |
| 供应商主数据清洗表 | 包含集团映射、活跃状态、分类标签 | CSV,单文件快照 |
| 价格清单清洗表 | 包含版本有效期、标准价、合同价 | CSV,按版本分区 |
| 数据质量报告 | 字段完整率、重复率、异常值统计、关联匹配率 | PDF / HTML |
| 价格差异初步标记表 | 差异百分比、差异标记、候选异常记录 | CSV,含差异标记列 |
完成上述数据准备后,即可进入第3章:供应商支出集中度计算与帕累托分析。