在计算列当中,经常使用EARLIER函数来获取当前外部特定行上下文,来跟内部筛选结果进行比较。例如,对于下图,如果要以Account列值为依据,计算Amount的累计量。则可以创建一个计算列Cum_Earlier,使用下面的表达式来实现。
Cum_Earlier =
SUMX (
FILTER (
SalesInfo,
SalesInfo[Account]
= EARLIER ( SalesInfo[Account] )
&& SalesInfo[Close Date]
<= EARLIER ( SalesInfo[Close Date] )
),
SalesInfo[Amount]
)
但是我们知道,上面这个表达式无法放在度量值当中来执行,因为在度量值内无法使用EARLIER和EARLIEST函数,Power BI会提示找不到所需的行上下文。
那么,要在度量值当中实现上的累加计算需求,应该怎么做呢?答案是用SELEVTEDVALUE函数来代替EARLER函数。
Cum_SELECTEDVALUE =
SUMX (
FILTER (
ALL ( SalesInfo ),
SalesInfo[Account]
= SELECTEDVALUE ( SalesInfo[Account] )
&& SalesInfo[Close Date]
<= SELECTEDVALUE ( SalesInfo[Close Date] )
),
SalesInfo[Amount]
)
在度量值中,SELEVTEDVALUE函数可以获得制定列下筛选上下文中仅剩的一个非重复值时,在特定的需求下,其作用跟计算列中的EARLER函数类似,可获得相同的计算结果,因此具有一定的替代性。