首页 > 解决方案 > DAX - 如何递归计算每日库存,考虑前一天的库存和今天的收据/预测?

问题描述

我在 PowerBI DAX 中有一个问题,我需要计算任何一天的预计库存水平。我的问题的症结在于,我需要每天将任何负库存四舍五入为 0 ,因为我们的业务没有积压订单,因此没有库存的预测被简单地视为销售损失。

所以......这是我需要完成的一些伪代码:

Projected Inventory =
  If [Date] = today()
    then lookup the current inventory level,
    else return MAX(0, yesterday's Projected Inventory - forecast + receipts)

我不能使用累积金额,因为这样做没有考虑到销售损失不应计入未来的收据。例如:

如果我们使用上述参数进行累积和,那么预计库存在第 30 天将错误地为 0:

MAX(Starting Inventory - Cumulative Forecast + Cumulative Receipts, 0)
MAX(1000 - (30 * 100) + 1500, 0) = 0

我需要的是只查看昨天的预计库存并减去今天的预测并添加今天的收据。这将正确地向我显示预计的库存水平是 1400。

MAX(Yesterday's Inventory - Today's Forecast + Today's Receipts, 0)
MAX(0 - 100 + 1500, 0) = 1400

我尝试了两件事;


  1. 创建“期初库存”列和“期末库存”列,其中:
    • 期初库存 = 前一天的期末库存
    • 期末库存 = MAX(0, 从当天开始的期初库存 - 预测 + 收据)

这会立即导致 PowerBI 识别出循环差异。


  1. 按照PowerBI 的此社区帖子尝试构建 FOR 循环。

但是我遇到了一个问题,我发现在设置变量后我无法更新它(即a = a + b)。我本来想说rolling inventory = current inventory,然后在我的 FOR 循环中我打算说 (pseudocode) for each day in the future, rolling inventory = max(rolling inventory - forecast + receipts, 0),但这似乎是不可能的。


有没有人知道他们有任何替代方案?

标签: recursiondaxpowerbi-desktopinventory

解决方案


推荐阅读