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

发布: (2026年2月28日 GMT+8 15:57)
7 分钟阅读
原文: Dev.to

Source: Dev.to

Datalaria 个人资料图片

丹尼尔

介绍

S&OP(Sales & Operations Planning)会议中,常常讨论的是观点而非事实:

“我认为我们会卖得更多”“上个月很异常”。

根本问题不是缺乏商业视野,而是 信号完整性不足

大多数供应链是通过电子表格管理的,这些表格几乎接受任何内容:将日期存为文本、空格以及键入错误,可能把 100 件的订单误写成 100 000 件。当你用这些“垃圾”喂给预测算法时,会得到放大的垃圾(金融上的 Bullwhip 效应)。

今天我们启动 S&OP 工程 系列。我们不谈理论;我们将构建一个自动审计你业务的数据架构。

Imagen Ingeniería del S&OP

问题:Signal‑to‑Noise Ratio

在电信(我的原始背景)中,噪声是任何会破坏信号的干扰。在供应链中,“噪声”指的是脏数据。

如果在需求规划之前不先过滤噪声,你就在 占用资本。未检测到的 outlier 就是燃烧中的金钱。如果你的算法看到一个虚假的 100 000 单位的峰值,它会订购你不需要的原材料,烧掉现金并占用仓库空间。数据卫生不是“清理”,而是对运营利润率的保护。

视觉证据

在看到任何代码之前,先看看你的 ERP 导出的数据(上方)与需求的统计实际情况(下方)之间的差异。

Impacto de la Higiene de Datos

上方:带有人为错误的原始数据。
下方:已清洗的信号,可用于 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)中如何扩展感兴趣的技术人员:

  1. Ingesta – 将 CSV 上传到 Supabase Storage 的私有 bucket 或本地数据库。
  2. Trigger – Python worker 检测文件到达。
  3. Proceso – 在 Docker 容器内的内存中执行清洗。
  4. Persistencia – 将清洗后的数据注入“唯一真相”表。
  5. Exposición – Supabase 的 API 允许下游(AI 模型、仪表盘、ERP)仅消费已验证的信号。

通过此架构,“质量阀门”保护你的供应链免受数据污染,确保 S&OP 决策基于可靠信号而非噪声。

在 PostgreSQL 中使用行级安全 (RLS) 确保无人能手动篡改财务历史

安全提示: 在生产环境中,绝不使用超级用户权限运行脚本。我们使用特定的服务角色和严格的 RLS 策略来确保供应链的完整性。

数据流可视化

下图展示了“脏”数据如何通过我们的 质量阀门 进入唯一真相之前的过程:

diagrama S&OP parte 1

图例

  • 🔴 红色: 含噪声的原始数据(问题)
  • 🟢 绿色: 已清洗的信号,可用于预测
  • 🟠 橙色: 已标记的异常,需要人工审查
  • 🔵 蓝色: 集中存储(Supabase)

下一步:科学预测

现在我们拥有了干净的数据库(纯净信号),我们已经准备好展望未来。

在本系列的下一章节中,我们将把这张干净的表格与 Facebook Prophet 连接,以生成概率需求预测,永远摒弃 Excel 的简单移动平均。

订阅 以获取第 2 章:“需求规划:从占卜到概率”

0 浏览
Back to Blog

相关文章

阅读更多 »

不糟糕的语义失效

缓存问题 如果你在 Web 应用上工作了一段时间,你就会了解缓存的情况。你加入缓存,一切都变快了,然后有人……

SQL 连接和窗口函数

markdown !Musungu Ruth Ambogohttps://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws...