DAX - 引用自身的公式

3

我正在努力将以下Excel逻辑用DAX重新创建:

enter image description here

ContCF都是数据列(来自SQL数据库),而A的值是动态的,因为它来自What-if分析:

enter image description here

正如您在截图中所看到的,A度量未能正确计算年份>2021的值。我无法理解公式如何引用“自己”(即上一行的结果)。我尝试使用EARLIER函数,但它似乎无法与度量一起使用。我还尝试创建一个计算列代替度量,但它们无法与what-if参数配合使用。

以下是我目前的进展:

mA = 
    var Cont = SELECTEDVALUE(JP[Cont])
    var CF = SELECTEDVALUE(JP[CF])
    var AR =  1.03
return
    A[Parameter Value] * AR - CF + Cont

任何提示和解决方案都将不胜感激。感谢您的时间。
1个回答

4
您不能在DAX中递归自引用列。
请参阅相关问题:DAX中的递归 但是,对于这种情况,您可以通过意识到对于第N年,所需结果可以写成一个闭合公式来创建所需列。
A * AR^N + sum_(i=1)^N AR^(N-i) (Cont_i - CF_i)

在DAX中,可以这样写(其中Yr = NJP[Year] = i):
mA = 
VAR AR = 1.03
VAR Yr =  SELECTEDVALUE ( JP[Year] )
VAR Temp =
    ADDCOLUMNS (
        FILTER ( ALL ( JP ), JP[Year] <= Yr ),
        "Const", ( JP[Cont] - JP[CF] ) * POWER ( AR, Yr - JP[Year] )
    )
RETURN
    A[Parameter Value] * POWER ( AR, Yr ) + SUMX ( Temp, [Const] )

如果你从2021年开始,那么你需要从Yr变量中减去2020年。

Result


Alexis,你可能已经听过很多次了,但是您先生真的是个天才!它运行得非常好,我无法感谢您足够 :-) - Justyna MK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接