簡體   English   中英

基於切片器功率bi的先前值的總和量

[英]Sum amount base from previous value on slicer power bi

我有一張這樣的桌子:

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和Month制作切片器(忽略代碼),我想顯示如下的SUM of Amount:

  • 如果我在切片器Year 2017 and Month 12 ,則顯示的值是基於2017-11的SUM Amount,而在Slicer Year 2018 and Month 1應該是基於2017-12的SUM Amount

我已經嘗試過使用此工具進行測試,但這是不允許的:

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

怎么做對?

我想要這樣的東西

https://ibb.co/eGJTce

注意:我使用直接查詢SQL Server

更新:到目前為止,我通過子查詢在SQL Server表中添加了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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM