2. 数据源分析:常见采购数据源与格式差异

采购支出数据仓库的ETL管道面临的首要挑战是数据源的多样性。不同企业、不同业务阶段所采用的采购系统各不相同,导致源数据的结构、语义和质量参差不齐。本章将系统分析三类最常见的采购数据源——ERP、SRM和供应商门户,并深入探讨它们的数据格式差异与字段映射策略。

2.1 常见采购数据源概览

根据企业采购数字化成熟度,数据源通常分为以下三个层级:

数据源类型 典型系统 数据主导方 数据质量特征 ETL接入难度
ERP SAP ECC/S4HANA、Oracle EBS、用友NC 企业内部财务/供应链 结构化强,主数据较规范,但价格字段常被财务逻辑干扰 中
SRM SAP Ariba、Coupa、甄云、企企通 采购部门/供应商协同 包含谈判价、合同价、报价单,但版本管理复杂 中高
供应商门户 供应商自建Portal、EDI平台、邮件附件 供应商 格式最不统一,字段命名随意,价格单位常出错 高
关键洞察: 价格方差清洗的核心难点并非单一系统的内部数据,而是跨系统间同一采购订单的价格字段语义不一致。例如,ERP中的"净价"可能已扣除折扣,而SRM中的"单价"可能是含税毛价。

2.2 数据格式差异与解析策略

不同数据源输出的文件格式差异巨大,直接影响ETL管线的解析逻辑与容错设计。以下是三种主流格式的对比:

格式 典型场景 优点 缺点 ETL解析要点
CSV ERP定期导出、供应商邮件附件 人类可读,体积小,通用性强 无Schema约束,编码混乱,分隔符冲突 需检测分隔符、处理引号转义、统一UTF-8编码
XML SRM系统接口、EDI标准报文 结构清晰,支持嵌套,Schema可验证 冗余标签多,解析性能较低 使用XPath提取价格节点,注意命名空间
API JSON 云SRM实时接口、供应商门户RESTful API 轻量,易于程序处理,支持分页 字段命名风格各异,嵌套深度不可控 需处理分页、限流、字段驼峰/下划线转换
实践建议: 对于CSV文件,建议在ETL首阶段执行"格式探测"——自动识别分隔符、引号字符和行尾符,避免因文件格式微变导致整个管道断裂。

2.3 源系统字段映射:从业务语义到技术字段

字段映射是数据对齐的基础。同一个业务概念(如"采购单价")在不同系统中可能拥有完全不同的字段名、数据类型和业务含义。以下是一个典型的字段映射表示例:

目标字段(数据仓库) ERP源字段 SRM源字段 供应商门户字段 映射规则/转换逻辑
po_number EBELN PurchaseOrderID PO_No 统一转为字符串,去除前导零
unit_price NETPR UnitPrice 单价 统一转为Decimal(18,4),去除货币符号
currency WAERS CurrencyCode 币种 统一转为ISO 4217三字母代码
tax_code MWSKZ TaxIndicator 税率 映射为标准化税率代码表
price_unit PEINH PriceUnit 单位 统一转为基准单位(如EA、KG)
常见陷阱: 供应商门户中的"单价"字段经常出现单位不一致问题。例如,某供应商以"每百件"报价,而ERP以"每件"记录。若ETL未做单位归一化,价格方差计算将产生数量级错误。

2.4 数据源集成架构图

下图展示了从多源采购系统到数据仓库的ETL集成架构,重点标注了价格字段在各个环节的流转与对齐点:

采购数据源集成与价格字段对齐架构 数据源层 ERP系统 SAP / Oracle / 用友 SRM系统 Ariba / Coupa / 甄云 供应商门户 Portal / EDI / 邮件 CSV / XML XML / API JSON CSV / PDF解析 格式解析与标准化层 CSV解析器 | XML XPath提取 | JSON反序列化 | 编码统一 字段映射与语义对齐层 po_number → EBELN/PurchaseOrderID | unit_price → NETPR/UnitPrice/单价 价格方差清洗与对齐引擎 单位归一化 → 币种转换 → 含税/不含税判定 → 方差计算 说明:价格方差清洗必须在字段映射与语义对齐完成之后进行,否则跨系统价格比较将失去意义

2.5 数据源质量评估矩阵

在ETL设计阶段,建议对每个数据源进行质量预评估,以便为价格方差清洗设置合理的阈值与异常处理策略:

评估维度 ERP SRM 供应商门户 对价格方差的影响
字段完整性 高(>95%) 中高(85-95%) 低(60-80%) 缺失价格字段将导致方差计算跳过该记录
单位一致性 高 中 低 单位不一致是价格方差的最大噪声源
时间戳精度 高(到秒) 中(到日) 低(到月或无) 影响价格有效期的对齐精度
货币标准化 高 高 低(常缺失) 货币缺失时需使用默认值或上下文推断
ETL设计原则: 针对供应商门户数据源,建议在管道中增加"数据源可信度标签"字段。当价格方差超出阈值时,可优先排查低可信度数据源,快速定位问题根因。