基于切片器功率 bi 的先前值的总和

Sum amount base from previous value on slicer power bi

我有一个 table 这样的:

Year        Month       Code     Amount
---------------------------------------   
2017        11           a        7368    
2017        11           b        3542    
2017        12           a        4552    
2017        12           b        7541    
2018         1           a        6352    
2018         1           b        8376    
2018         2           a        1287    
2018         2           b        3625

我根据年份和月份制作切片器(忽略代码),我想像这样显示金额的总和:

我试过这个用于测试,但不允许这样做:

Last Month = CALCULATE(SUM(Table[Amount]); Table[Month] = SELECTEDVALUE(Table[Month]) - 1)

怎么做才对?

我想要这样的东西

注意:我直接查询 SQL 服务器

更新:到目前为止,我通过子查询在SQL服务器Table中添加了Last_Amount列,也许你们有更好的方法来解决我的问题

CALCULATE 语句中的过滤器仅设计用于采用不涉及进一步计算的简单语句。有几种可能的补救措施。

1.CALCULATE 函数中使用前使用变量计算上个月的数字。

Last Month = 
    VAR PrevMonth = SELECTEDVALUE(Table[Month]) - 1
    RETURN CALCULATE(SUM(Table[Amount]), Table[Month] = PrevMonth)

2. 使用FILTER()函数。这是一个允许更复杂过滤的迭代器。

Last Month = CALCULATE(SUM(Table[Amount]),
                 FILTER(ALL(Table),
                     Table[Month] = SELECTEDVALUE(Table[Month]) - 1))

编辑:由于您使用的是年份和月份,因此您需要为一月设置一个特殊案例。

Last Month = 
    VAR MonthFilter = MOD(SELECTEDVALUE(Table[Month]) - 2, 12) + 1
    VAR YearFilter = IF(PrevMonth = 12,
                         SELECTEDVALUE(Table[Year]) - 1,
                         SELECTEDVALUE(Table[Year]))
    RETURN CALCULATE(SUM(Table[Amount]),
               Table[Month] = MonthFilter,
               Table[Year] = YearFilter)