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

Vote for your favorite vizzies from the Power BI Dataviz World Championship submissions. Vote 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
Community Champion
Community Champion

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
Power BI DataViz World Championships

Power BI Dataviz World Championships

Vote for your favorite vizzies from the Power BI World Championship submissions!

Sticker Challenge 2026 Carousel

Join our Community Sticker Challenge 2026

If you love stickers, then you will definitely want to check out our Community Sticker Challenge!

January Power BI Update Carousel

Power BI Monthly Update - January 2026

Check out the January 2026 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.