用于根据同一列的前一行填充列值的 DAX

DAX for populating column value based on previous row of same column

我正在尝试复制这个 Excel 公式或 for 循环,它根据同一列的前一行值计算当前行值。
当value = 1时,Result = Rank * 1 否则,结果 = 排名 * 之前的结果

| Value | Rank | Result |
| ----- | ---- | ------ |
|   1   |   3  |   3    |
|   2   |   2  |   6    |
|   3   |   1  |   6    |

我已经尝试生成一个系列 table 来获取值和排名列,但我无法引用现有的结果列来更新它们。有没有一种方法可以使用 DAX 来获得动态行数?

可以做到,但是你需要跳出递归的心态。请注意,即使 [Value] 等于 1,我也做了 [Rank],因为在这种情况下 [Rank] * [Value] 等于 [Rank](值等于 1,对吗?)。

Result =
IF (
    Table[Value] = 1,
    [Rank],
    [Rank] *
    PRODUCTX (
        FILTER ( Table, Table[Value] < EARLIER ( Table[Value] ) ),
        [Rank]
    )
)

编辑:

前一个过于复杂:

Result =
CALCULATE (
    PRODUCT ( [Rank] ),
    FILTER ( Table, [Value] <= EARLIER ( [Value] ) )
)