Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
5 years ago
Solved

Previous Row Value Dax

Hello Everyone,

 

I need to get previous row value and need help. I have a calculated measure like that;

 

RunningSum=

CALCULATE(

SUM( 'TABLE'[sales] ),

FILTER(

ALLSELECTED('TABLE'),

'TABLE'[date]<=MAX('TABLE'[date])

))

 

And I'm trying to create a calculated column as below but its not working.

 

VAR locations= 'TABLE'[store]

VAR dates= 'TABLE'[date]

return

CALCULATE(

MAX(RunningSum),

FILTER('TABLE',

'TABLE'[store]=locations && 'TABLE'[date]< dates

))

 

Appreciate your help.

  • v-yingjl's avatar
    v-yingjl
    5 years ago

    Hi Anonymous ,

    Thanks for your provided details. Since Dax is calculated based on column value not row value, the last row in your picture cannot achieved if there is no continued date after 2020/1/31 because it add a new row in your dataset.

    Basically the previous row measure will be like this:

    Previous row value =
    CALCULATE (
        [RunningSum],
        FILTER (
            ALL ( 'Table' ),
            'Table'[Date]
                = CALCULATE (
                    MAX ( 'Table'[Date] ),
                    FILTER ( ALL ( 'Table' ), 'Table'[Date] < SELECTEDVALUE ( 'Table'[Date] ) )
                )
        )
    )
    

    You will get the result in the table visual:

    Attached a new sample file in the below, hopes to help you.

     

    Best Regards,
    Yingjie Li

    If this post helps then please consider Accept it as the solution to help the other members find it more quickly.

4 Replies

  • v-yingjl's avatar
    v-yingjl
    Community Support

    Hi Anonymous ,

    Based on your first measure, you are trying to calculate a cumulative value which should get the previous row value.

    You can try to create this calculated column:

    Column = 
    CALCULATE (
        SUM ( 'Table'[sales] ),
        FILTER (
            ALL ( 'Table' ),
            'Table'[store] = EARLIER ( 'Table'[store] )
                && 'Table'[date] <= EARLIER ( 'Table'[date] )
        )
    )

    Attached a sample file in the below, hopes to help you.

     

    Best Regards,
    Yingjie Li

    If this post helps then please consider Accept it as the solution to help the other members find it more quickly.

    • Anonymous's avatar
      Anonymous
      Not applicable

      Hi v-yingjl  ,

       

      Firstly, i appreciate for your answers. I think i should give some detail about what i want to get.
      I have a value and RunningSum measure which I've created before as you can see below.
      So i want to get Previous Row Value using RunningSum measure.
       
       
      Thanks.
      • v-yingjl's avatar
        v-yingjl
        Community Support

        Hi Anonymous ,

        Thanks for your provided details. Since Dax is calculated based on column value not row value, the last row in your picture cannot achieved if there is no continued date after 2020/1/31 because it add a new row in your dataset.

        Basically the previous row measure will be like this:

        Previous row value =
        CALCULATE (
            [RunningSum],
            FILTER (
                ALL ( 'Table' ),
                'Table'[Date]
                    = CALCULATE (
                        MAX ( 'Table'[Date] ),
                        FILTER ( ALL ( 'Table' ), 'Table'[Date] < SELECTEDVALUE ( 'Table'[Date] ) )
                    )
            )
        )
        

        You will get the result in the table visual:

        Attached a new sample file in the below, hopes to help you.

         

        Best Regards,
        Yingjie Li

        If this post helps then please consider Accept it as the solution to help the other members find it more quickly.

  • Anonymous , power bi do not support the previous row. So based on data we need to calculate. like you need till the previous date

     

    Try with date table

     

    RunningSum= // current
    CALCULATE(
    SUM( 'TABLE'[sales] ),
    FILTER(
    ALLSELECTED('Date'),
    'Date'[date]<=MAX('Date'[date])
    ))


    previous RunningSum= //previous
    CALCULATE(
    SUM( 'TABLE'[sales] ),
    FILTER(
    ALLSELECTED('Date'),
    'Date'[date]<MAX('Date'[date])
    ))