PowerBI Dax - 计算列根据有条件的日期带来价值

问题描述 投票:0回答:2

我的目标是一个已计算的列,指示哪个即将到来的订单将用于填补库存短缺。下图显示了当前的表格以及我所取得的成就。我可以根据重新安排日期提交下一个即将到来的订单,但我无法按正确的顺序提交订单。我已将视图简化为 Excel,但我在 Powerbi 中并使用 Dax 有数据。

目前我正在使用下面的公式,但我无法编辑它何时更改为下一个订单。公式应意识到重新安排日期低于发生短缺的日期,但不应高于下一个订单的重新安排日期。

Upcoming orders  = 

IF([Indicator] = "Late" && [Change] = "-",

CALCULATE (
MAX ( 'Table1'[ID]),

FILTER ( 'Table1', 'Table1'[Resch date] < [Date] && [Change] = "+" )

),BLANK())

以下是我的目标。

提前感谢您提供任何提示和帮助。

if-statement conditional-statements powerbi dax formula
2个回答
1
投票

这个怎么样?

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”进行比较。

有关早期功能的更多详细信息


0
投票

是的,我已经为您找到了一个完全可行的解决方案,尽管由于 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行日期的最高重新安排日期

我们开始了!

© www.soinside.com 2019 - 2024. All rights reserved.