首页 > 解决方案 > 基于同一列的前一行填充列值的 DAX

问题描述

我正在尝试复制此 Excel 公式或 for 循环,它根据同一列的前一行值计算当前行值。
当 value = 1 时,Result = Rank * 1 Else,Result = Rank * previous Result

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

我已经尝试生成一个系列表来获取 Value 和 Rank 列,但我无法引用现有的 Result 列来更新它。有没有办法使用 DAX 来完成动态行数?

标签: for-looprecursionpowerbidaxcalculated-columns

解决方案


这是可以做到的,但你需要让你的思维方式摆脱递归。请注意,我[Rank][Value]至等于 1,因为[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] ) )
)

推荐阅读