Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

To celebrate FabCon Vienna, we are offering 50% off select exams. Ends October 3rd. Request your discount now.

Reply
frankly
Frequent Visitor

Row differences using DAX (PowerBI)

¿What would be the simplest DAX formula in PowerBI to calculate row differences?

 

I tried using EARLIER() but it cannot handle the operation at the limit (missing data):

EARLIER/EARLIEST refers to an earlier row context which doesn't exist.

 

rowvaluediff(value)?
15 
21-4
365
471
53-4
630
71-2
810
987

 

 

4 REPLIES 4
rubayatyasmin
Super User
Super User

Hi, @BjoernSchaefer 

 

try this

 

Difference =
CALCULATE(
SUM('Data'[value]),
FILTER(
ALL('Data'),
'Data'[row] = EARLIER('Data'[row]) - 1
)
) - 'Data'[value]

 

the code will only work if your row column has unique value. If not then create an index column starting from 0. 

 

If you have missing values in your value column then try this: make sure you have an index column starting from0

 

Difference =
LOOKUPVALUE (
Data[value],
Data[Index],
Data[Index] - 1,
BLANK ()
) - Data[value]

 

 

 

this thread might help:

 

Solved: I need output like this by using measure ( calcula... - Microsoft Fabric Community

 

rubayatyasmin_0-1689517080227.png

 


Did I answer your question? Mark my post as a solution!super-user-logo

Proud to be a Super User!


@frankly Or you can use IF statememnt:

 

Difference =
IF(
Tabelle[row] = 1,
BLANK(),
(LOOKUPVALUE(Tabelle[value], Tabelle[row], Tabelle[row] - 1) - Tabelle[value]) * -1
)

 

rubayatyasmin_0-1689517080227.png


Did I answer your question? Mark my post as a solution!super-user-logo

Proud to be a Super User!


ERD
Community Champion
Community Champion

Hi @frankly ,

You can try this measure:

 

diff =
VAR _current_row = SELECTEDVALUE ( Table_[row] )
VAR _current_value = SELECTEDVALUE ( Table_[value] )
VAR _prev_row = MAXX ( FILTER ( ALL ( Table_[row] ), Table_[row] < _current_row ), Table_[row] )
VAR _prev_value = MAXX ( FILTER ( ALL ( Table_ ), Table_[row] = _prev_row ), Table_[value] )
RETURN
    IF ( NOT ISBLANK ( _prev_value ), _current_value - _prev_value )

 

ERD_0-1690877361648.png+

For the calculated coumn:

Column =
VAR _current_row = Table_[row]
VAR _current_value = Table_[value]
VAR _prev_row = MAXX ( FILTER ( VALUES ( Table_[row] ), Table_[row] < _current_row ), Table_[row] )
VAR _prev_value = MAXX ( FILTER ( Table_, Table_[row] = _prev_row ), Table_[value] )
RETURN
    IF ( NOT ISBLANK ( _prev_value ), _current_value - _prev_value )

 

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

Check out my latest demo report in the data story gallery.

Stand with Ukraine!


Here are official ways you can support Ukraine financially (accounts with multiple currencies):
1) Support the Armed Forces of Ukraine: https://bank.gov.ua/ua/about/support-the-armed-forces
2) Come Back Alive foundation: https://www.comebackalive.in.ua/

Thank you!

BjoernSchaefer
Helper II
Helper II

Hey frankly,

 

i was able to do it with SWITCH and LOOKUPVALUE.
Maybe there's a more elegant way.

formula = SWITCH(TRUE(),Tabelle[row]=1,BLANK(),(LOOKUPVALUE(Tabelle[value],Tabelle[row],Tabelle[row]-1)-Tabelle[value])*-1)

Kind Regards

 

Björn

Helpful resources

Announcements
September Power BI Update Carousel

Power BI Monthly Update - September 2025

Check out the September 2025 Power BI update to learn about new features.

Top Kudoed Authors