在 Power BI 中使用 DAX 为每一行计算 "Down factor"

Calculate "Down factor" for each row using DAX in Power BI

我有以下格式的数据:

Machine | Production | Production Factor | Down Factor | Order
--------|------------|-------------------|-------------|------
M1      | 0          | 0                 | 0           | 100
M2      | 187370     | 0                 | 0           | 115
M3      | 7054       | 0                 | 0           | 130
M4      | 39428      | 1                 | 24160       | 150
M5      | 6945       | 0                 | 0           | 160
M6      | 0          | 1                 | 24160       | 181
M7      | 19720      | 1                 | 4440        | 200
M8      | 4440       | 1                 | 0           | 220
M9      | 30000      | 0                 | 0           | 230
M10     | 20000      | 0                 | 0           | 240

从数据库中提取机器、生产、生产要素和订单字段 我需要根据升序字段范围内的公式为每台机器计算 "Down Factor":

Down Factor =
    SUM ( Production * Production Factor * IF(CurrentRowOrder > RowOrder THEN 1 ELSE 0 ) )

例如 M4 (CurrentRowOrder = 150):

 6945 * 0 * 1 (160 > 150) +
    0 * 1 * 1 (181 > 150) +
19720 * 1 * 1 (200 > 150) +
 4400 * 1 * 1 (220 > 150) +
30000 * 0 * 1 (230 > 150) +
20000 * 0 * 1 (240 > 150) = 24160

M7: (CurrentRowOrder = 200):

 4400 * 1 * 1 (220 > 200) +
30000 * 0 * 1 (230 > 200) +
20000 * 0 * 1 (240 > 200) = 4400

使用这种方法计算 "Down Factor" 的一般思路是包含顺序大于计算行顺序的行。

如何在 DAX 中执行此类计算?你能帮忙解答一些疑问吗?

您可以将其作为计算列,如下所示:

DownOrder =
SUMX (
    Table1,
    Table1[Production] * Table1[Production Factor]
        * IF ( Table1[Order] > EARLIER ( Table1[Order] ), 1, 0 )
)

SUMX 遍历第一个参数给出的 table 中的每一行,并对第二个参数中的表达式求和。 EARLIER 函数允许您从(较早的)行上下文中获取值,以便您可以将每一行与当前行进行比较。

你也可以这样写,它应该可以作为衡量标准:

DownOrder =
VAR CurrentOrder = SELECTEDVALUE ( Table1[Order] )
RETURN
    SUMX (
        FILTER ( ALLSELECTED ( Table1 ), Table1[Order] > CurrentOrder ),
        Table1[Production] * Table1[Production Factor]
    )