4. 需求分析
品类分类趋势分析是采购支出数据仓库的核心应用场景之一。其目标是通过多维度、多指标的综合分析,揭示不同品类在时间序列上的支出变化、价格波动、采购量变动以及供应商格局的演变。本节将系统梳理分析所需的核心指标与维度,为后续的星型模型设计与ETL逻辑奠定基础。
4.1 核心指标定义
趋势分析需要围绕“金额-量-价-结构”四个层面构建指标体系,确保既能洞察宏观支出规模,又能深入微观效率与风险。
| 指标名称 | 业务含义 | 计算公式 / 数据来源 | 分析价值 |
|---|---|---|---|
| 支出金额 | 一定时期内采购该品类所支付的总金额(含税/不含税) | SUM(订单行金额) | 衡量品类支出规模,识别高支出品类,支撑预算管控 |
| 采购量 | 一定时期内采购该品类的总数量(单位:件、kg、升等) | SUM(订单行数量) | 反映实际需求规模,与支出金额结合可计算均价 |
| 单价趋势 | 品类在时间序列上的平均价格变化轨迹 | 支出金额 / 采购量(加权平均单价) | 监测价格波动,识别通胀/通缩趋势,辅助采购谈判 |
| 供应商集中度 | 品类采购额在供应商之间的分布集中程度 | CRn(前n家供应商占比)或 HHI(赫芬达尔指数) | 评估供应风险,判断是否过度依赖单一供应商 |
指标计算提示: 单价趋势建议使用加权平均单价(支出金额/采购量),而非简单算术平均,以避免不同规格产品数量差异导致的均价失真。供应商集中度在ETL阶段需预先计算各供应商在品类内的支出占比,再汇总计算CR3或CR5。
4.2 核心维度体系
维度是观察指标的“视角”。品类趋势分析需要至少建立四个基础维度,并支持维度之间的交叉钻取。
- 时间维度: 支持年、季度、月、周等粒度,用于观察趋势的季节性与周期性。
- 品类维度: 支持品类树(大类→中类→小类),用于上卷(Roll-up)和下钻(Drill-down)分析。
- 供应商维度: 包含供应商名称、等级、区域、合作年限等属性,用于分析供应商表现。
- 部门维度: 包含采购部门、成本中心、需求部门等,用于分析内部需求来源与合规性。
4.3 指标与维度的交叉分析矩阵
将四个指标与四个维度进行交叉组合,可以形成丰富的分析场景。下表列出了最常用的分析组合及其业务解读:
| 维度 \ 指标 | 支出金额 | 采购量 | 单价趋势 | 供应商集中度 |
|---|---|---|---|---|
| 时间 | 月度/季度支出趋势,识别支出高峰 | 采购量季节性波动 | 价格走势图,判断涨价/降价周期 | 集中度随时间变化,判断供应格局是否恶化 |
| 品类 | Top N 高支出品类排名 | 品类采购量占比 | 不同品类价格波动对比 | 各品类供应商集中度对比,识别高风险品类 |
| 供应商 | 供应商支出份额,评估合作规模 | 供应商供货量稳定性 | 同一供应商不同品类的报价差异 | 供应商在品类内的垄断程度 |
| 部门 | 部门支出预算执行率 | 部门需求量的合理性 | 不同部门采购同品类是否存在价格差异 | 部门是否集中采购导致单一供应商依赖 |
4.4 趋势分析核心流程(SVG图)
下图展示了从数据源到趋势分析看板的完整流程,重点突出ETL在指标计算与维度关联中的角色。
4.5 维度与指标的星型模型映射(SVG图)
在数据仓库设计中,趋势分析需要将指标存储在事实表,维度存储在维度表。下图展示了星型模型的核心映射关系。
4.6 关键分析场景与SQL示例
以下SQL示例展示了如何基于星型模型查询品类月度支出与单价趋势:
-- 查询品类月度支出金额与加权平均单价趋势
SELECT
d.year,
d.month,
c.category_name,
SUM(f.amount) AS total_spend,
SUM(f.quantity) AS total_quantity,
ROUND(SUM(f.amount) / NULLIF(SUM(f.quantity), 0), 4) AS weighted_avg_price
FROM fact_purchase f
JOIN dim_time d ON f.time_key = d.time_key
JOIN dim_category c ON f.category_key = c.category_key
WHERE c.category_level = '小类'
AND d.year = 2024
GROUP BY d.year, d.month, c.category_name
ORDER BY d.year, d.month, total_spend DESC;
ETL 注意事项: 供应商集中度指标(如CR3)建议在ETL阶段按“品类+时间”粒度预计算并存入事实表,避免BI报表层实时计算带来的性能开销。单价趋势分析中,需注意处理数量单位不一致的问题(如“个”与“箱”),建议在ETL中统一转换为标准单位。
4.7 需求分析总结清单
在进行数据仓库设计与ETL开发前,请确认以下需求点已明确:
- 指标确认: 支出金额、采购量、单价趋势、供应商集中度(CR3/CR5/HHI)是否全部纳入?是否需要增加“采购周期”、“到货准时率”等辅助指标?
- 维度确认: 时间、品类、供应商、部门四个维度是否满足业务方分析需求?是否需要增加“项目维度”、“合同维度”或“区域维度”?
- 粒度确认: 事实表粒度是“订单行”还是“汇总日/月”?不同粒度会影响ETL聚合逻辑与存储量。
- 计算逻辑确认: 单价是采用加权平均还是最后一次采购价?供应商集中度是按“支出金额”还是“采购量”计算?
- 历史数据范围: 需要加载多少年的历史数据?是否涉及数据回溯与重算?
常见需求遗漏: 业务方往往只关注“支出金额”和“采购量”,容易忽略“供应商集中度”这一风险指标。建议在需求评审阶段主动引导业务方关注供应风险,将集中度分析纳入核心需求,避免数据仓库上线后返工。