recursion - 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)
我不能使用累积金额,因为这样做没有考虑到销售损失不应计入未来的收据。例如:
- 起始库存 = 1,000
- 每日预测 = 100(我们将在 10 天内售罄)
- 我们最快在 30 天内收货(意味着第 11-29 天没有库存),包含 1,500 件
如果我们使用上述参数进行累积和,那么预计库存在第 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
我尝试了两件事;
- 创建“期初库存”列和“期末库存”列,其中:
- 期初库存 = 前一天的期末库存
- 期末库存 = MAX(0, 从当天开始的期初库存 - 预测 + 收据)
这会立即导致 PowerBI 识别出循环差异。
- 按照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)
,但这似乎是不可能的。
有没有人知道他们有任何替代方案?
解决方案
推荐阅读
- bots - 不和谐机器人问候消息
- excel - Excel 中是否有与嵌套 IF(ISNUMBER(SEARCH) 函数相同的可扩展函数?
- flutter - 当一个区域在 10 秒内被触摸 5 次时,如何在 Dart/Flutter 中编码以启用我的调试模式
- django - 将 Django 响应的返回类型设置为对象列表
- npm - 登录 MyGet 以获取 GitHub Actions 以安装 Private 包
- recursion - 将嵌套的可区分联合表达式转换为字符串
- python - 当元素不被引用时,将元组列表的字符串表示形式转换为列表
- kubernetes - 将脚本或命令与 Skaffold 开发部署一起运行到 Kubernetes 集群
- elixir - 当机器别名有连字符时尝试连接节点时出现“(ArithmeticError)算术表达式中的错误参数”
- c# - 语言下拉菜单未正确设置文化