Forum Discussion

Tormod_GK's avatar
Tormod_GK
Frequent Visitor
10 years ago
Solved

Calculate difference from previous month

Hi.

 

I have a table where I need to subtract two values which are from different rows. I want the difference between the value for the current date in the row and from the row which has the previous month. This is an example where I have the columns Date and Value in my table, but I need to create the column 'Difference'.

 

I have also tried this DAX-formula, but the value only shows up in one date so it doesn't work.

sum(DW_Data_Salg[Inntekt])-CALCULATE(SUM(DW_Data_Salg[Inntekt]);DATEADD(DW_Data_Salg[DATO].[Date];-1;MONTH))

 

Is there someone who know how to do this?

 

DateValueDifference
15.02.201650 00050 000
15.03.201670 00020 000
15.04.201670 0000
15.05.201680 00010 000
15.06.201620 000-60 000

 

Best regards,

Tormod (Norway)

 

  • Tormod_GK

     

    In this scenario, since you need to get the previous month data based on current slicing date, it's better to create a measure instead of a calculated column. Otherwise, you have to lookup previous row based on index column as ankitpatira suggested. Just create a measure like:

     

    difference=
    sum(DW_Data_Salg[Inntekt])-CALCULATE(SUM(DW_Data_Salg[Inntekt]),PARALLELPERIOD(DW_Data_Salg[DATO].[Date],-1,MONTH))

    Or

    difference=
    sum(DW_Data_Salg[Inntekt])-CALCULATE(SUM(DW_Data_Salg[Inntekt]),PREVIOUSMONTH(DW_Data_Salg[DATO].[Date]))

    Regards,

16 Replies

  • ankitpatira's avatar
    ankitpatira
    Community Champion

    Tormod_GK First goto query editor in power bi desktop and under Add column, add index column from zero. Then under modelling tab create new column using below code.

     

    Difference = 
    TABLENAME[Value] - IF(
      TABLENAME[Value] = 0,
      TABLENAME[Value],
      LOOKUPVALUE(
       TABLENAME[Value],
       TABLENAME[Index],
       TABLENAME[Index]-1)
     )
    • Tormod_GK's avatar
      Tormod_GK
      Frequent Visitor

      Hi and thanx for your solution, but there is one problem. My table consists of 2 mill rows and 40 columns and the reference is department. So the lookup is on department and for the previous month.

       

      IndexDateDepartmentValueDifference
      10015.02.201610050 00050 000
      234515.03.201610070 00020 000
      758515.04.201610070 0000
      65432515.05.201610080 00010 000
      34532115.06.201610020 000-60 000
      • v-sihou-msft's avatar
        v-sihou-msft
        Microsoft Employee

        Tormod_GK

         

        In this scenario, since you need to get the previous month data based on current slicing date, it's better to create a measure instead of a calculated column. Otherwise, you have to lookup previous row based on index column as ankitpatira suggested. Just create a measure like:

         

        difference=
        sum(DW_Data_Salg[Inntekt])-CALCULATE(SUM(DW_Data_Salg[Inntekt]),PARALLELPERIOD(DW_Data_Salg[DATO].[Date],-1,MONTH))

        Or

        difference=
        sum(DW_Data_Salg[Inntekt])-CALCULATE(SUM(DW_Data_Salg[Inntekt]),PREVIOUSMONTH(DW_Data_Salg[DATO].[Date]))

        Regards,

    • mnigam's avatar
      mnigam
      New Member

      Hi,

       

      I have table with column names Commodity, Months and Quantity. I want to calculate the difference between month's quantity w.r t. commodity column.

       

      can anyone help me to write DAX query.

       

      commoditymonthsquantity
      114/1/2017500
      115/1/2017700
      116/1/20171000
      117/1/20171500
      124/1/2017600
      125/1/2017900
      126/1/20171400
      127/1/20172000
      134/1/2017100
      135/1/2017500
      136/1/2017600
      137/1/2017750
      144/1/20171000
      145/1/20172000
      146/1/20173000
      147/1/20174000

       

      Expected result is below:

       

      commoditymonthsquantity
      114/1/2017500
      115/1/2017200
      116/1/2017300
      117/1/2017500
      124/1/2017600
      125/1/2017300
      126/1/2017500
      127/1/2017600
      134/1/2017100
      135/1/2017400
      136/1/2017100
      137/1/2017150
      144/1/20171000
      145/1/20171000
      146/1/20171000
      147/1/20171000

       

       

       Thanks in advance

       

      Regards,

       

      Manish Nigam

       

       

    • SantiagoBS's avatar
      SantiagoBS
      New Member

      Hi there ankitpatira 

      Your DAX code finally lead me to the solution I needed, thanks a lot, however, may I ask why the conditional before looking up the value?

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi Please see image below which I created through Quick Measure & Time Intelligence:

     

     

     

    So my dataset is from Sep 30, 2020 to Feb 28, 2021. I calculated the %diff MoM, How can I hide March row since we do not have March data as of now and how to remove the Total column from waterfall chart created by this table?

     

    Also is there a way to reflect the Total column as a % change of difference from Sep 30 2020 and Feb 28 2021 data? Whether there has been overall decrease or increase in Feb 2021 from starting point Sep 2020? How to have this formula as a separate measure in itself which keeps on updating when March and future months are added with base point being Sept 30, 2020?

     

  • I have tried DAX impression to calcualte %difference over previous month, however the result gives me blank value for the months not required , ex, in screenshot I am also getting blank values for Dec over Nov which is not required , also it shows me Feb blank values as well. I only need the %diff for Dec & Jan . Formula used -

     

    MID MoM% =
    VAR __PREV_MONTH =
        CALCULATE(
            DISTINCTCOUNT('Append1'[Merchant Id]),
            DATEADD('Date'[Date],-1, MONTH)
        )
    RETURN
        DIVIDE(
            DISTINCTCOUNT('Append1'[Merchant Id]) - __PREV_MONTH,
            __PREV_MONTH
        )
     
  • Hi, could anyone please guide me as to how to get %difference of previous month ? I am getting blanks for months not required in the report , have to hide these blank columns , very taxing .

    I am using the following DAX impression  -

     

    MID MoM% =
    VAR __PREV_MONTH =
        CALCULATE(
            DISTINCTCOUNT('Append1'[Merchant Id]),
            DATEADD('Date'[Date],-1, MONTH)
        )
    RETURN
        DIVIDE(
            DISTINCTCOUNT('Append1'[Merchant Id]) - __PREV_MONTH,
            __PREV_MONTH
        )
     
    Also attaching the screenshot , would appreciate if someone can help me on this please, I only require previous