基于切片器功率 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
我根据年份和月份制作切片器(忽略代码),我想像这样显示金额的总和:
- 如果我在切片器
Year 2017 and Month 12
上select,显示的值是SUM Amount based on 2017-11, and select on slicer Year 2018 and Month 1
should be SUM金额基于 2017-12
我试过这个用于测试,但不允许这样做:
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)
我有一个 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
我根据年份和月份制作切片器(忽略代码),我想像这样显示金额的总和:
- 如果我在切片器
Year 2017 and Month 12
上select,显示的值是SUM Amount based on 2017-11, and select on slicerYear 2018 and Month 1
should be SUM金额基于 2017-12
我试过这个用于测试,但不允许这样做:
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)