我试图根据两个值(object_1
和object_2
)之间的计算结果来创建滚动总和。问题是当我尝试通过使用calculate
函数+ earlier
函数来实现此目的时,它似乎没有任何影响。
我尝试用值创建虚拟表(使用Summarize
),然后使用earlier
在Sumx
函数中使用Rolling Sum =
var object_1 = Calculate(SUM('Table 1'[Value]),
Filter(allselected('Table 1'),
COUNTROWS(FILTER('Table 1',
EARLIER('Table 1'[Date])<= 'Table 1'[Date]))))
var object_2 = Calculate(SUM('Table 2'[Value]),
Filter(allselected('Table 2'),
COUNTROWS(FILTER('Table 2',
EARLIER('Table 2'[Date])<= 'Table 2'[Date]))))
return
calculate(object_1 - object_2,
Filter(allselected('Date Table'),
COUNTROWS(FILTER('Date Table',
EARLIER('Date Table'[Date])<= 'Date Table'[Date]))))
函数创建达到预期的效果,但这没用。
object_1 - object_2
期望的结果将是等于或小于该日期的所有日期的滚动总和。
获得的结果与没有calculation
函数过滤器的<div id="page1" contenteditable="true">
text from 1st page
</div>
相同
答案 0 :(得分:1)
我相信,因为您在VAR中使用EARLIER,所以它被带到基本上忽略它的过滤器上下文之外。您可能会有些运气,需要将计算移到return语句内,然后创建一个VAR来存储您的最大日期(这是在过滤器上下文之外进行的)。.我没有测试过,但是可能是这样的:
Rolling Sum =
VAR T1MaxDate =
MAX ( 'Table 1'[Date] )
VAR T2MaxDate =
MAX ( 'Table 2'[Date] )
VAR MaxDate =
MAX ( 'Date Table'[Date] )
RETURN
CALCULATE (
CALCULATE (
SUM ( 'Table 1'[Value] ),
FILTER (
ALLSELECTED ( 'Table 1' ),
COUNTROWS ( FILTER ( 'Table 1', 'Table 1'[Date] <= T1MaxDate ) )
)
)
- CALCULATE (
SUM ( 'Table 2'[Value] ),
FILTER (
ALLSELECTED ( 'Table 2' ),
COUNTROWS ( FILTER ( 'Table 2', 'Table 2'[Date] <= T2MaxDate ) )
)
),
FILTER (
ALLSELECTED ( 'Date Table' ),
COUNTROWS ( FILTER ( 'Date Table', 'Date Table'[Date] <= MaxDate ) )
)
)