簡體   English   中英

Power BI滾動總上個月DAX

[英]Power BI Rolling Total Previous Month DAX

我在POWER BI工作並嘗試計算上個月滾動總數的DAX表達式。 我有一個過濾器,我選擇某個月,我想計算上個月的滾動總數。

以下計算可以完美地計算所選日期范圍的滾動總計。

如何計算前幾個月的滾動總數?

Rolling_Total_Current_Month = CALCULATE(
        SUM(SalesInvoice[Sales])
        ,FILTER(ALLSELECTED(SalesInvoice), (SalesInvoice[Date]) <= MAX(SalesInvoice[Date])))

以下是我的數據示例,我每天都有多個類別的銷售額(事實上我有更多的詳細信息列,但這已經簡化了)

Date    Day Amount  Category
1/1/2016    1   100 A
1/1/2016    1   120 B
1/1/2016    1   90  C
1/2/2016    2   500 A
1/2/2016    2   321 B
1/2/2016    2   143 C

到目前為止,我已經提出了一個方程來解決滾動總數,但是當我嘗試切片並查看單個類別的滾動總數時,它在上個月不起作用。 我只保留了上個月的原始滾動總數。

以下是上個月滾動總數的等式。 但是,一旦根據類別切片,不會重新計算上個月的滾動總數。

PREVIOUS_MONTH_ROLLING_TOTAL = 
CALCULATE(
    [Current Sales]
    ,FILTER(
        ALL( Orders )
        ,Orders[MonthNumber] = MAX( Orders[MonthNumber] ) - 1
            && Orders[Day] <= MAX( Orders[Day] )
    )
)

首先,我在名為Orders-的表中有這樣的數據 -

Date            Amount
12/12/2017      100
12/12/2017      200
12/12/2017      300
1/1/2018        400
1/1/2018        500

我首先使用以下公式創建一個名為Year&Month的計算列: -

Year = YEAR(Orders[Date])
Month = FORMAT(Orders[Date],"mmmm")

然后我創建一個名為月號的列,當表中涉及一年以上以及識別前幾個月時,這將有助於排序。

MonthNumber = DATEDIFF(Min(Orders[Date]),Orders[Date],MONTH) 

當月銷售額可以是度量值或計算列。 在問題中,您通過計算列獲得了當月銷售的答案,如果您想采取措施,那么這樣的事情將適用於匯總表。

Current Month Sales = SUm(Orders[Amount])

我還會創建一個名為Key的列: -

Key = Orders[MonthNumber] & Orders[Category]

現在,對於上個月銷售,我將創建一個度量來查找我們創建的選定MonthNumber。

Previous Month Sales = 
         Var SelectedCategory = SELECTEDVALUE(Orders[Category])                                                                                                                                                           
         Var SelectedMonthNumberr = SELECTEDVALUE(Orders[MonthNumber]) - 1                                                                                                                                                
         Var ReqKey = SelectedMonthNumberr & SelectedCategory  

   Return 
         IF(ISBLANK(SelectedCategory) <> True(), 
         CALCULATE(SUM(Orders[Amount]),FILTER(ALL(Orders), Orders[Key] = ReqKey)),
         CALCULATE(SUM(Orders[Amount]),FILTER(ALL(Orders), Orders[MonthNumber] = SelectedMonthNumberr)))                                                                                                                                                                    

或者你的措施

PREVIOUS_MONTH_ROLLING_TOTAL = 
CALCULATE(
    [Current Sales]
    ,FILTER(
        ALL( Orders )
        ,Orders[MonthNumber] = MAX( Orders[MonthNumber] ) - 1
            && Orders[Day] <= MAX( Orders[Day] )
    )
)

您可以添加另一個過濾項目作為&& Orders[Category] = SELECTEDVALUE(Orders[Category])但是如果您沒有選擇任何類別,或者在沒有類別的表格或視覺效果上,則無法使用。 所以,你需要在我的測量公式中引用if else邏輯。

匯總表

如果這有幫助,請告訴我。

我已經解決了如何讓前幾個月滾動總數。 你必須做三件事。 首先在數據表中創建一個月號列(這用作一個整數,從中減去1個月)。 您還必須創建一個日期列。

然后為當前銷售或您的任何價值創建一個度量。

為當月銷售創建度量

Current Sales = SUM(Orders[Amount])

那么這個等式。

PREVIOUS_MONTH_ROLLING_TOTAL = 
CALCULATE(
    [Current Sales]
    ,FILTER(
        ALL( Orders )
        ,Orders[MonthNumber] = MAX( Orders[MonthNumber] ) - 1
            && Orders[Day] <= MAX( Orders[Day] )
    )
)

這個等式的概念是能夠在圖表上顯示前幾個月的滾動總數,X軸為“DAY”(所以1-31)然后你可以查看當前月份,上個月,去年同期所有相同的圖表或表格。

嘗試這些方面的東西:

Rolling_Total_Previous_Month =
    VAR CurrentMonth = MAX(SalesInvoice[Date])
    VAR PreviousMonth = EOMONTH(CurrentMonth,-1)
    RETURN CALCULATE(SUM(SalesInvoice[Sales]), SalesInvoice[Date] <= PreviousMonth)

暫無
暫無

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

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