Ssas 恢复DAX公式中的原始筛选器上下文

Ssas 恢复DAX公式中的原始筛选器上下文,ssas,powerpivot,dax,Ssas,Powerpivot,Dax,我有一个数据模型,其中有一个名为Transactions(如下)的表,还有一个日期维度TranDate 我有一个方法来计算透视表中第一个可见日期的期初余额 Op Bal First Selected := VAR MinDate = CALCULATE ( MIN ( TranDates[Tran Date] ), ALLSELECTED ( TranDates ) ) RETURN CALCULATE ( SUM ( Transactions[Amount]

我有一个数据模型,其中有一个名为Transactions(如下)的表,还有一个日期维度TranDate

我有一个方法来计算透视表中第一个可见日期的期初余额

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
    )
)
Op Bal首次选择:=
VAR MinDate=计算(
最小值(转换日期[转换日期]),
所有选定项(传输日期)
)
返回
算计(
金额(交易[金额]),
滤器
(
所有(TranDates),
交易日期[交易日期]
如果我取消选择1月16日,我将得到以下所需结果:

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


是否有一个等效的DAX公式可以在Excel 2013/SSAS 2014中使用(即不使用变量)?

经过多次尝试和错误后,我定义了以下度量:

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]
)
Op Bal首先选择:=
貂皮
(
添加列(
添加列
(
总结(
所有(交易),
交易[交易日期]
),
“MinDate”,
计算(
最小值(交易[交易日期]),
ALLSELECTED()
)
),
“Op Bal第一次选择的计算”,
算计(
金额(交易[金额]),
滤器
(
所有(交易),
交易【交易日期】<[MinDate]
)
)               
),
[Op Bal第一次选择的计算]
)
我在内部上下文中使用了ALL(),以便在ALLSELECTED()之外的上下文中保留原始筛选器上下文(即透视表选择)

如果要使用TranDate表作为筛选器,可以按如下方式定义它:

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]
)
Op Bal首先选择:=
貂皮
(
添加列(
添加列
(
总结(
所有选定的(传输日期),
交易日期[交易日期]
),
“MinDate”,
计算(
最小值(传输日期[传输日期])
)
),
“Op Bal第一次选择的计算”,
算计(
金额(交易[金额]),
滤器
(
所有(TranDates),
交易日期[交易日期]<[MinDate]
)
)               
),
[Op Bal第一次选择的计算]
)

经过多次尝试和错误后,我定义了以下衡量标准:

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]
)
Op Bal首先选择:=
貂皮
(
添加列(
添加列
(
总结(
所有(交易),
交易[交易日期]
),
“MinDate”,
计算(
最小值(交易[交易日期]),
ALLSELECTED()
)
),
“Op Bal第一次选择的计算”,
算计(
金额(交易[金额]),
滤器
(
所有(交易),
交易【交易日期】<[MinDate]
)
)               
),
[Op Bal第一次选择的计算]
)
我在内部上下文中使用了ALL(),以便在ALLSELECTED()之外的上下文中保留原始筛选器上下文(即透视表选择)

如果要使用TranDate表作为筛选器,可以按如下方式定义它:

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]
)
Op Bal首先选择:=
貂皮
(
添加列(
添加列
(
总结(
所有选定的(传输日期),
交易日期[交易日期]
),
“MinDate”,
计算(
最小值(传输日期[传输日期])
)
),
“Op Bal第一次选择的计算”,
算计(
金额(交易[金额]),
滤器
(
所有(TranDates),
交易日期[交易日期]<[MinDate]
)
)               
),
[Op Bal第一次选择的计算]
)

感谢您返回并发布您的解决方案感谢您返回并发布您的解决方案