2. 采购业务建模:核心业务实体关系分析

采购支出数据仓库的基石是对采购到付款(Procure-to-Pay, P2P)全链路业务实体的准确建模。本章将深入分析采购订单、收货单、发票、供应商主数据四大核心实体及其之间的业务关系,为后续维度建模与ETL校验规则奠定基础。

2.1 四大核心业务实体定义

在采购业务中,每个实体都承载着特定的业务语义与数据属性。下表归纳了各实体的核心定位与关键字段:

实体名称 业务定位 关键标识字段 状态生命周期
采购订单(PO) 采购需求的正式下达,包含物料、数量、单价、交货日期 PO编号、PO行号、物料编码、采购组织 已创建 → 已审批 → 已发货 → 已收货 → 已结算
收货单(GR) 实物入库的确认凭证,记录实际到货数量与质量 收货单号、收货行号、PO参考号、库位 待检 → 已质检 → 已入库 → 已退货
发票(IV) 供应商开具的付款凭证,记录应付金额与税额 发票号、发票行号、PO参考号、GR参考号 已录入 → 已校验 → 已过账 → 已付款
供应商主数据(Vendor) 供应商基础信息与资质档案 供应商编码、税号、银行账户、付款条款 潜在 → 合格 → 黑名单 → 冻结
建模要点: 采购订单行(PO Line)是事实表的最小粒度,而非订单头。因为同一订单可能包含不同物料、不同交货日期,行级分析才能准确反映采购支出明细。

2.2 实体间核心业务关系

四大实体通过“采购到付款”流程形成网状关联。理解这些关系是设计数据仓库事实表与维度表关联键的前提。

  • PO → GR(1:N): 一张采购订单允许分多次收货,每次收货生成独立的收货单。关键关联字段为PO编号+PO行号。
  • GR → IV(1:1 或 N:1): 收货单与发票的匹配是“三单匹配”的核心。理想情况下,一张收货单对应一张发票行;但实务中常出现合并开票(多张GR对应一张IV)或拆分开票(一张GR对应多张IV)。
  • PO → IV(N:M): 发票可以直接引用PO,也可以引用GR后间接关联PO。在数据仓库中,需要同时保留PO与IV的直接关联和间接关联路径。
  • Vendor → PO/IV: 供应商是采购订单和发票的公共维度,通过供应商编码关联。供应商主数据的变更(如付款条款调整)会直接影响应付账款计算。
三单匹配校验规则: 数据仓库在ETL阶段必须校验PO数量 ≥ GR数量 ≥ IV数量,且PO单价与IV单价的偏差不得超过预设阈值(如±5%)。这是价格方差校验的核心逻辑。

2.3 实体关系图(SVG)

下图展示了采购核心实体之间的关联关系与数据流向,箭头方向代表业务驱动顺序:

采购核心实体关系图 采购核心实体关系图(P2P链路) 供应商主数据 采购订单(PO) 收货单(GR) 发票(IV) 采购支出事实表(行级粒度) 供应商编码 供应商编码 PO编号+行号 GR编号 间接关联(通过GR) 说明: PO→GR为1:N,GR→IV为1:1或N:1,PO→IV为N:M间接关联。供应商是PO和IV的公共维度。 数据仓库事实表以PO行+GR行+IV行组合为最小粒度,支持三单匹配校验与价格方差分析。

2.4 实体关系矩阵与业务约束

为了在数据仓库中准确还原业务关系,需要定义实体间的关联矩阵与关键业务约束:

源实体 目标实体 关联基数 关联键 业务约束
采购订单(PO) 收货单(GR) 1:N PO编号 + PO行号 GR累计收货数量 ≤ PO订购数量
收货单(GR) 发票(IV) 1:1 或 N:1 GR编号 IV开票数量 ≤ GR收货数量
采购订单(PO) 发票(IV) N:M PO编号(间接) IV含税总金额 ≤ PO含税总金额(含容差)
供应商(Vendor) 采购订单(PO) 1:N 供应商编码 PO供应商状态必须为“合格”
供应商(Vendor) 发票(IV) 1:N 供应商编码 IV供应商税号与主数据一致
常见建模陷阱: 不要直接将ERP中的采购订单头作为事实表粒度。同一订单头下不同行号的物料、单价、交货期可能完全不同,行级建模才能支持准确的支出分析与价格校验。此外,供应商主数据中的付款条款变更属于缓慢变化维度(SCD Type 2),需要在事实表中记录生效日期。

2.5 业务实体到数据仓库的映射策略

将上述业务实体映射到数据仓库模型时,遵循以下策略:

  1. 采购订单维度: 以PO行号为自然键,包含物料、数量、单价、交货日期等属性。PO头信息(如采购组织、采购组)作为退化维度或桥接表处理。
  2. 收货事实表: 以GR行号为粒度,记录实际收货数量、质检结果、入库时间。关联PO行键与供应商键。
  3. 发票事实表: 以IV行号为粒度,记录开票数量、含税金额、税额、付款到期日。关联GR行键与PO行键。
  4. 采购支出事实表: 以PO行+GR行+IV行的组合为粒度,支持三单匹配校验。包含价格方差、数量差异、金额差异等度量值。
  5. 供应商维度: 采用SCD Type 2,记录供应商名称、税号、银行账户、付款条款、资质等级、生效日期与失效日期。
ETL校验前置条件: 在加载采购支出事实表之前,必须完成以下校验:
① PO行号在采购订单维度中存在且状态为“已审批”;
② GR行号对应的PO行号存在且收货数量未超订购数量;
③ IV行号对应的GR行号存在且开票数量未超收货数量;
④ 供应商编码在供应商维度中存在且状态为“合格”。

通过上述实体关系分析与建模策略,采购支出数据仓库能够准确还原P2P全链路业务,为后续的价格方差校验、供应商绩效分析、采购支出洞察提供坚实的数据基础。