2. 采购数据基础:主数据、ETL流程与质量清洗

采购支出分析的起点是高质量的数据。如果基础数据不可靠,后续的品类分类算法和模型优化将失去意义。本章聚焦采购主数据的核心结构、ETL(抽取-转换-加载)的标准流程,以及数据质量问题的识别与清洗策略。

2.1 采购主数据核心结构

采购主数据是描述采购业务实体的基础信息,主要包括物料、供应商和品类三大维度。三者之间的关联关系构成了支出分析的数据骨架。

主数据实体 关键字段示例 业务意义
物料主数据 物料编码、物料描述、规格型号、计量单位、物料组 唯一标识采购对象,决定品类归属与成本结构
供应商主数据 供应商编码、名称、注册地址、行业分类、信用等级 记录交易对手方信息,支撑供应商绩效与风险分析
品类主数据 品类编码、品类名称、层级路径、采购类别(直接/间接) 建立支出分类体系,是品类管理策略的基础
实践要点:物料主数据与品类主数据通常通过“物料组”或“品类编码”字段关联。在ERP系统中,物料组往往是品类分类的第一级映射,但常因历史原因导致映射混乱,需要在ETL阶段进行标准化。

2.2 支出数据的ETL流程

支出数据通常来自ERP、SRM、财务系统等多个异构源。ETL流程负责将这些原始数据转化为可用于分析的结构化数据集。标准流程分为三个阶段:

  1. 抽取(Extract):从源系统(如SAP、Oracle EBS)中获取采购订单、发票、付款凭证等交易记录。常见方式包括数据库直连、API接口或文件导入(CSV/Excel)。
  2. 转换(Transform):对原始数据进行清洗、标准化、聚合与衍生计算。例如:统一货币单位、计算含税/不含税金额、将物料编码映射到品类层级、处理缺失值。
  3. 加载(Load):将转换后的数据写入分析数据仓库或数据集市,通常采用增量加载策略以平衡性能与时效性。
ETL核心产出:一张包含“时间、物料、供应商、品类、数量、金额、单价”等核心字段的支出事实表,以及关联的主数据维度表。
采购支出数据ETL流程架构 采购支出数据ETL流程架构 抽取 (Extract) ERP / SRM / 财务系统 转换 (Transform) 清洗 / 标准化 / 映射 加载 (Load) 数据仓库 / 数据集市 关键转换操作 • 货币统一:将多币种金额按汇率转换为分析基准币种(如CNY) • 品类映射:将物料组编码关联至标准品类树(如UNSPSC或自定义层级) • 衍生字段:计算单价(金额/数量)、同比/环比增长率、支出占比

2.3 数据质量常见问题与清洗策略

采购数据在实际业务中普遍存在质量问题。根据行业经验,超过60%的采购支出分析项目在数据清洗阶段耗费了最多的时间。以下是三类最常见的问题及对应的清洗策略:

问题类型 典型表现 清洗策略
缺失值 物料描述为空、供应商编码缺失、品类未分配 基于规则填充(如通过物料编码反查描述)、标记为“未分类”并人工补录
重复记录 同一采购订单在系统中存在多条记录,金额被重复计算 基于订单号+行项目号+物料编码的组合键去重,保留最新时间戳的记录
异常值 单价为0或负数、数量为0但金额巨大、日期超出合理范围 设定业务阈值(如单价>0且<历史均价3倍),超出范围的数据标记为异常并隔离审查
常见陷阱:直接删除异常值可能导致样本偏差。建议先标记异常数据,在分析阶段评估其对整体支出的影响程度,再决定是否剔除或修正。

2.4 数据清洗流程示例

以下是一个典型的采购支出数据清洗流程,使用Python伪代码展示关键步骤:

import pandas as pd
import numpy as np

# 1. 加载原始数据
df = pd.read_csv('raw_procurement_data.csv')

# 2. 处理缺失值:品类编码为空时填充为'UNKNOWN'
df['category_code'].fillna('UNKNOWN', inplace=True)

# 3. 去重:基于采购订单号+行项目号
df.drop_duplicates(subset=['po_number', 'line_item'], keep='last', inplace=True)

# 4. 异常值清洗:单价必须在(0, 100000]范围内
df = df[(df['unit_price'] > 0) & (df['unit_price'] <= 100000)]

# 5. 标准化:统一日期格式
df['transaction_date'] = pd.to_datetime(df['transaction_date'], errors='coerce')

# 6. 输出清洗后的数据
df.to_csv('cleaned_procurement_data.csv', index=False)
数据质量清洗决策流程 数据质量清洗决策流程 原始采购数据 缺失值检查与填充 重复记录去重 异常值检测与处理 数据标准化与输出
清洗效果验证:清洗后的数据应满足以下条件:
• 无重复采购订单行项目
• 所有物料均有品类归属(或明确标记为“未分类”)
• 单价、数量、金额均在合理业务范围内
• 日期字段可转换为标准时间格式,无空值或非法值

通过以上主数据梳理、ETL流程规范以及数据质量清洗策略,可以为后续的品类分类算法选型与模型优化提供坚实、可靠的数据基础。下一阶段将基于清洗后的支出数据,进行特征工程与品类分类模型的构建。