For loop 用于基于同一列的前一行填充列值的DAX

For loop 用于基于同一列的前一行填充列值的DAX,for-loop,recursion,powerbi,dax,calculated-columns,For Loop,Recursion,Powerbi,Dax,Calculated Columns,我正在尝试复制此Excel公式或for循环,它根据同一列的上一行值计算当前行值。 当值=1时,结果=秩*1 否则,结果=排名*上一个结果 | Value | Rank | Result | | ----- | ---- | ------ | | 1 | 3 | 3 | | 2 | 2 | 6 | | 3 | 1 | 6 | 我已经尝试生成一个序列表来获取值列和秩列,但是我无法引用现有的结果列来更新它们。是否有一种方法可以使

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

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

我已经尝试生成一个序列表来获取值列和秩列,但是我无法引用现有的结果列来更新它们。是否有一种方法可以使用DAX来实现动态行数?

这是可以做到的,但您需要摆脱递归思维。注意,即使对于
[Value]
等于1,我也做了
[Rank]
,因为
[Rank]*[Value]
在这种情况下等于
[Rank]
(值等于1,对吗?)

结果=
如果(
表[值]=1,
[职级],,
[排名]*
PRODUCTX(
过滤器(表,表[值]<前面的表[值]),
[排名]
)
)

编辑:

前一个问题过于复杂:

Result =
CALCULATE (
    PRODUCT ( [Rank] ),
    FILTER ( Table, [Value] <= EARLIER ( [Value] ) )
)
结果=
算计(
乘积([秩]),

过滤器(表[值]DAX无法处理递归计算…这里唯一现实的选择是在源代码处预计算此字段,然后导入它。@RADO,那个么在SQL server上复制此字段有什么建议吗?像存储过程一样?是的,您可以使用存储过程并用SQL编写递归。我建议将其作为单独的问题和适当的标记。@RADO是的-它不能处理递归,但它足够强大来解决这个问题-看我的答案。这确实有帮助!我一直在玩SUMX,MINX和之前的PRODUCTX,但完全错过了它的功能-谢谢!
Result =
CALCULATE (
    PRODUCT ( [Rank] ),
    FILTER ( Table, [Value] <= EARLIER ( [Value] ) )
)