在 DAX 公式中恢复原始过滤器上下文

Restore original filter context in DAX formula

我有一个数据模型,其中 table 称为 Transactions(如下),TranDate 是日期维度。

我有一个度量来计算数据透视表中可见的第一个日期的期初余额 table。

Op Bal First Selected := 
VAR MinDate = CALCULATE ( 
    MIN ( TranDates[Tran Date] ), 
    ALLSELECTED ( TranDates ) 
)
RETURN
CALCULATE (
    SUM ( Transactions[Amount] ),
    FILTER
    (
        ALL ( TranDates ),
        TranDates[Tran Date] < MinDate
    )
)

如果我取消选择 Jan-16,我会得到下面想要的结果:

但是,该度量仅适用于 Excel 2016 而不是 Excel 2013,因为 Excel 2013 不支持变量。如果我将 MinDate 变量替换为 DAX 表达式,则该度量将 return 空白,因为 ALLSELECTED 恢复 FILTER() 函数中的上下文而不是 CALCULATE() 函数中的上下文(即 MinDate 是 1-Jan 而不是 1-Feb)。

是否有适用于 Excel 2013 / SSAS 2014 的等效 DAX 公式(即不使用变量)?

经过大量试验和错误,这是我定义的度量:

Op Bal First Selected:=
MINX
(
    ADDCOLUMNS (
        ADDCOLUMNS
        (
            SUMMARIZE (
                ALL(Transactions),
                Transactions[Tran Date]
            ),
            "MinDate",
            CALCULATE ( 
                MIN ( Transactions[Tran Date] ),
                ALLSELECTED()           
            )
        ),
        "Op Bal First Selected Calc",
        CALCULATE (
            SUM ( Transactions[Amount] ),
            FILTER 
            (
                ALL( Transactions ),
                Transactions[Tran Date] < [MinDate]
            )
        )               
    ),
    [Op Bal First Selected Calc]
)

我在内部上下文中使用了 ALL(),以便原始筛选器上下文(即枢轴 table 选择)保留在 ALLSELECTED() 之外的上下文中。

如果你想使用TranDate table作为过滤器,你可以定义如下:

Op Bal First Selected:=
MINX
(
    ADDCOLUMNS (
        ADDCOLUMNS
        (
            SUMMARIZE (
                ALLSELECTED(TranDates),
                TranDates[Tran Date]
            ),
            "MinDate",
            CALCULATE ( 
                MIN ( TranDates[Tran Date] )        
            )
        ),
        "Op Bal First Selected Calc",
        CALCULATE (
            SUM ( Transactions[Amount] ),
            FILTER 
            (
                ALL( TranDates ),
                TranDates[Tran Date] < [MinDate]
            )
        )               
    ),
    [Op Bal First Selected Calc]
)