为什么在我的行上下文中使用Earlier函数不起作用

时间:2019-05-08 12:19:35

标签: powerbi dax

我试图根据两个值(object_1object_2)之间的计算结果来创建滚动总和。问题是当我尝试通过使用calculate函数+ earlier函数来实现此目的时,它似乎没有任何影响。

我尝试用值创建虚拟表(使用Summarize),然后使用earlierSumx函数中使用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> 相同

1 个答案:

答案 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 ) )
        )
    )