S&OP:为什么你的Excel在骗你(以及如何用Python审问它)
Source: Dev.to

介绍
在 S&OP(Sales & Operations Planning)会议中,常常讨论的是观点而非事实:
“我认为我们会卖得更多”,“上个月很异常”。
根本问题不是缺乏商业视野,而是 信号完整性不足。
大多数供应链是通过电子表格管理的,这些表格几乎接受任何内容:将日期存为文本、空格以及键入错误,可能把 100 件的订单误写成 100 000 件。当你用这些“垃圾”喂给预测算法时,会得到放大的垃圾(金融上的 Bullwhip 效应)。
今天我们启动 S&OP 工程 系列。我们不谈理论;我们将构建一个自动审计你业务的数据架构。
问题:Signal‑to‑Noise Ratio
在电信(我的原始背景)中,噪声是任何会破坏信号的干扰。在供应链中,“噪声”指的是脏数据。
如果在需求规划之前不先过滤噪声,你就在 占用资本。未检测到的 outlier 就是燃烧中的金钱。如果你的算法看到一个虚假的 100 000 单位的峰值,它会订购你不需要的原材料,烧掉现金并占用仓库空间。数据卫生不是“清理”,而是对运营利润率的保护。
视觉证据
在看到任何代码之前,先看看你的 ERP 导出的数据(上方)与需求的统计实际情况(下方)之间的差异。
上方:带有人为错误的原始数据。
下方:已清洗的信号,可用于 AI 算法。
解决方案:“质量阀门”架构
为了解决这个问题,我们采用 First‑Principles Thinking。我们不需要对 Excel “更加小心”;我们需要一个在数学上 禁止 脏数据进入我们“唯一真相”的系统。
我们设计了一个自动化流水线,使用以下技术栈:
| 组件 | 技术 |
|---|---|
| 大脑 | Python (Pandas + SciPy) 用于统计逻辑 |
| 存储 | Supabase (PostgreSQL) 作为“唯一真相” |
| 代理 | 脚本在新文件出现时自动运行 |
代码:统计 > 直觉
我们不使用固定规则(“如果大于 1000,则删除”)。我们使用统计方法。我们实现了 Z‑Score,它衡量数据与均值相差多少个标准差。
如果一笔销售的 Z‑Score > 3(超过正常分布的 3 σ),则在数学上不太可能是标准行为。系统不会删除它(可能是真实的销售),而是 标记为审计 并将其排除在自动预测之外。
注意:我们使用 Z‑Score 并假设正态分布来简化本示例。在需求间歇的生产场景中,我们使用 IQR(四分位距)或 MAD(中位数绝对偏差)等方法,它们对非高斯分布更为稳健。
类 SupplyChainSanitizer
def detect_outliers_zscore(self, threshold=3):
"""
Detecta anomalías estadísticas usando Z‑Score.
No borramos la fila (pérdida de info), la etiquetamos.
"""
# Calculamos la desviación estándar de la señal
z_scores = np.abs(stats.zscore(self.df['qty']))
# Marcamos lo que es matemáticamente sospechoso
self.df['is_outlier'] = z_scores > threshold
return self
开放厨房:亲自尝试
作为工程师,我不信任我无法执行的东西。因此,我已将清洗逻辑隔离在一个 Notebook 交互式在 Colab。
无需安装 Python 或配置数据库。我已经准备了一个临时环境,您可以在其中:
- 生成一个损坏的销售数据集(模拟)。
- 运行清洗引擎
SupplyChainSanitizer。 - 观察算法如何检测并分离噪声。
点击按钮,在单元格中点击“Play”,观看数据工程的实际运行。
生产架构(Behind the Scenes)
针对对在真实企业(Datalaria Core)中如何扩展感兴趣的技术人员:
- Ingesta – 将 CSV 上传到 Supabase Storage 的私有 bucket 或本地数据库。
- Trigger – Python worker 检测文件到达。
- Proceso – 在 Docker 容器内的内存中执行清洗。
- Persistencia – 将清洗后的数据注入“唯一真相”表。
- Exposición – Supabase 的 API 允许下游(AI 模型、仪表盘、ERP)仅消费已验证的信号。
通过此架构,“质量阀门”保护你的供应链免受数据污染,确保 S&OP 决策基于可靠信号而非噪声。
在 PostgreSQL 中使用行级安全 (RLS) 确保无人能手动篡改财务历史
安全提示: 在生产环境中,绝不使用超级用户权限运行脚本。我们使用特定的服务角色和严格的 RLS 策略来确保供应链的完整性。
数据流可视化
下图展示了“脏”数据如何通过我们的 质量阀门 进入唯一真相之前的过程:
图例
- 🔴 红色: 含噪声的原始数据(问题)
- 🟢 绿色: 已清洗的信号,可用于预测
- 🟠 橙色: 已标记的异常,需要人工审查
- 🔵 蓝色: 集中存储(Supabase)
下一步:科学预测
现在我们拥有了干净的数据库(纯净信号),我们已经准备好展望未来。
在本系列的下一章节中,我们将把这张干净的表格与 Facebook Prophet 连接,以生成概率需求预测,永远摒弃 Excel 的简单移动平均。
订阅 以获取第 2 章:“需求规划:从占卜到概率”。



