2. 数据基础认知:采购订单数据结构解析
在价格方差清洗与越权采购排查之前,必须对采购订单的数据结构建立精确认知。订单数据是后续所有清洗规则的输入源,字段定义不清晰、类型不一致或空值处理不当,将直接导致方差计算失真与误判。
2.1 采购订单核心字段全景
一张标准的采购订单通常包含数十个字段,但用于品类分类与价格方差清洗的关键字段集中在以下五类:
| 字段名称 | 数据类型 | 业务含义 | 清洗关注点 |
|---|---|---|---|
| 品类ID | 字符串 / 整数 | 物料所属品类的唯一编码 | 层级完整性、是否存在空值或非法编码 |
| 单价 | 数值(小数) | 单个物料的采购成交价 | 单位一致性、异常零值、负值、极端离群值 |
| 数量 | 数值(整数/小数) | 本次采购的物料件数或重量 | 非正整数校验、单位换算一致性 |
| 供应商 | 字符串 | 提供物料的法人实体名称或编码 | 名称归一化、重复供应商识别、黑名单匹配 |
| 采购人 | 字符串 | 发起采购订单的员工ID或姓名 | 权限映射、部门归属、是否在岗 |
实战经验: 在超过70%的企业数据中,品类ID 存在多级编码混用(如一级品类“A01”与三级品类“A01-03-002”并存),必须在清洗前统一层级粒度,否则方差计算将跨品类比较,失去业务意义。
2.2 关键字段定义详解
2.2.1 品类ID —— 方差计算的锚点
品类ID是价格方差分组计算的唯一依据。同一品类ID下的订单行,其单价才具有可比性。常见问题包括:
- 空值或占位符: 部分系统允许订单行不填品类,默认写入“-”或“0”,需标记为待补录。
- 层级不一致: 同一物料在不同订单中可能使用不同粒度的品类编码,需通过品类映射表统一至同一层级。
- 废弃编码: 历史品类已停用但仍在订单中出现,需与主数据系统交叉校验。
2.2.2 单价 —— 方差计算的核心变量
单价是价格方差清洗的直接对象。必须确保:
- 单位一致: 同一品类下,所有订单的单价单位必须统一(如“元/个” vs “元/打”),否则方差将放大数倍。
- 不含税/含税标识: 混用含税价与不含税价会导致系统性偏差,清洗前需通过税率字段做归一化。
- 异常值边界: 单价为0、负数或超过品类历史均价10倍的值,应进入异常标记流程。
2.2.3 数量 —— 加权方差的权重因子
在计算加权价格方差时,数量作为权重直接影响方差贡献度。常见陷阱:
- 数量为0或负数: 此类订单行应排除出方差计算,否则权重无效。
- 数量单位与单价单位不匹配: 例如单价按“公斤”但数量按“吨”,需做单位换算。
2.2.4 供应商 —— 越权排查的关联实体
供应商字段用于识别“同一供应商在不同品类下的价格异常”以及“采购人与供应商之间的利益关联”。清洗要点:
- 名称归一化: “XX科技有限公司”与“XX科技公司”需通过模糊匹配合并。
- 多供应商编码: 同一实体在不同系统中可能拥有多个编码,需建立统一供应商主数据。
2.2.5 采购人 —— 权限与责任追溯
采购人字段是越权采购排查的起点。清洗规则包括:
- 员工ID有效性: 校验采购人是否在在职员工表中存在。
- 品类权限映射: 采购人是否有权采购该品类ID对应的物料。
- 部门归属: 采购人所在部门是否与品类使用部门一致。
数据治理建议: 在数据入库阶段,对上述五个字段建立非空约束与格式校验触发器,可减少后续清洗工作量的60%以上。
2.3 订单数据结构关系图
下图展示了五个关键字段在订单行中的逻辑关系,以及它们如何支撑价格方差计算与越权排查两条分析主线:
2.4 字段类型与清洗规则对照
在进入价格方差清洗之前,需要为每个字段预定义清洗规则。下表总结了五个关键字段的常见脏数据类型及对应清洗策略:
| 字段 | 脏数据示例 | 清洗策略 | 优先级 |
|---|---|---|---|
| 品类ID | 空值、"-"、"0"、废弃编码 | 回填主数据、标记待人工确认 | P0 |
| 单价 | 0、负数、单位错误、含税混用 | 剔除或归一化至统一单位与税基 | P0 |
| 数量 | 0、负数、单位与单价不匹配 | 排除出加权计算或做单位换算 | P1 |
| 供应商 | 名称简写、多编码、空值 | 模糊匹配归一化、关联主数据 | P1 |
| 采购人 | 离职员工ID、空值、格式错误 | 校验在职状态、回填默认值 | P2 |
注意: 优先级P0表示:如果该字段存在脏数据,价格方差清洗结果将直接不可用,必须优先处理。P1和P2字段的脏数据会影响越权排查的召回率,但不会导致方差计算崩溃。
2.5 数据质量检查清单
在开始价格方差清洗前,建议按以下清单对订单数据进行快速质量评估:
- 完整性检查: 五个关键字段的空值率是否均低于5%?
- 一致性检查: 同一品类ID下的单价单位是否统一?
- 准确性检查: 是否存在单价为0或负数的异常行?
- 时效性检查: 采购人是否均为在职员工?
- 唯一性检查: 供应商名称是否存在同一实体多种写法?
通过以上检查,可以快速定位数据质量短板,为后续的价格方差清洗规则配置提供输入。