我的目标是一个已计算的列,指示哪个即将到来的订单将用于填补库存短缺。下图显示了当前的表格以及我所取得的成就。我可以根据重新安排日期提交下一个即将到来的订单,但我无法按正确的顺序提交订单。我已将视图简化为 Excel,但我在 Powerbi 中并使用 Dax 有数据。
目前我正在使用下面的公式,但我无法编辑它何时更改为下一个订单。公式应意识到重新安排日期低于发生短缺的日期,但不应高于下一个订单的重新安排日期。
Upcoming orders =
IF([Indicator] = "Late" && [Change] = "-",
CALCULATE (
MAX ( 'Table1'[ID]),
FILTER ( 'Table1', 'Table1'[Resch date] < [Date] && [Change] = "+" )
),BLANK())
以下是我的目标。
提前感谢您提供任何提示和帮助。
这个怎么样?
Upcoming orders =
IF(
[Indicator] = "Late" && [Change] = "-",
CALCULATE(
MAX('Table1'[ID]),
FILTER(
ALL('Table1'),
'Table1'[Resch date] < [Date] &&
'Table1'[Resch date] > EARLIER('Table1'[Resch date]) &&
'Table1'[Change] = "+"
)
),
BLANK()
)
这里
EARLIER('Table1'[Resch date])
返回在外循环中评估的当前行的“Resch date”。
它允许内部 FILTER 函数将每个“Resch date”与当前行的“Resch date”进行比较。
是的,我已经为您找到了一个完全可行的解决方案,尽管由于 PowerBI 的限制,它确实需要一些重复。
首先,复制您正在引用的表。它不需要完全重复,但我们需要
ID
和 Reschedule Date
然后我们回到原始表并添加这个新列:
Solution_Column =
VAR CurrentDate = Table1[date]
VAR CurrentIndicator = Table1[indicator]
RETURN
CALCULATE(
MAX(Table2[ID]),
FILTER(
Table2,
Table2[reschedule date] <= CurrentDate && CurrentIndicator = "shortage"
)
)
对于每一行,它都会查找
Date
和 Indicator
以检查它是否是 shortage 行。如果是,那么它会查找我们创建的新表并提取早于shortage行日期的最高重新安排日期
我们开始了!