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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
ashrafkotb
Helper I
Helper I

How to create a calculated column to subtract previous row value?

Hello,

I need to create a calculated column that subtracts the current row value from the previous row value based on date and customer name. For example:

 

DateValueCustomerCalc_column (expected value)
01-04-2020100A 
01-04-2020400B 
01-04-2020500C 
02-04-2020120A20
02-04-2020440B40
02-04-2020560C60

 

Thanks in advance!

 

1 ACCEPTED SOLUTION
az38
Community Champion
Community Champion

Hi @ashrafkotb 

try

Calc_column = 
var _thisDate = Table[Date]
var _prevDate = CALCULATE(MAX(Table[Date]), ALLEXCEPT(Table, Table[Customer]), Table[Date] < _thisDate )

RETURN
Table[Value] - CALCULATE(MAX(Table[Value]), ALLEXCEPT(Table, Table[Customer]), Table[Date] = _prevDate )

do not hesitate to give a kudo to useful posts and mark solutions as solution
LinkedIn

View solution in original post

5 REPLIES 5
Greg_Deckler
Super User
Super User

See my article on Mean Time Between Failure (MTBF) which uses EARLIER: http://community.powerbi.com/t5/Community-Blog/Mean-Time-Between-Failure-MTBF-and-Power-BI/ba-p/3395...

 

So in your case, something like: 

Calc_column = 
  VAR __PreviousDate = MAXX(FILTER('Table',[Date] < EARLIER([Date]) && [Customer] = EARLIER([Customer])),[Date])
  VAR __PreviousValue = MAXX(FILTER('Table',[Date] = __PreviousDate) && [Customer] = EARLIER([Customer])),[Date])
RETURN
  [Value] - __PreviousValue
  

@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

Getting a Syntax error for this formula.

amitchandak
Super User
Super User

@ashrafkotb ,

Try new columns like

max date = maxx(filter(Table, table[Date]<earlier(Table[Date]) && table[Customer]=earlier(Table[Customer])),Table[Date])
diff = Table[value] - maxx(filter(Table, table[Date]=earlier(Table[max date]) && table[Customer]=earlier(Table[Customer])),Table[value])

az38
Community Champion
Community Champion

Hi @ashrafkotb 

try

Calc_column = 
var _thisDate = Table[Date]
var _prevDate = CALCULATE(MAX(Table[Date]), ALLEXCEPT(Table, Table[Customer]), Table[Date] < _thisDate )

RETURN
Table[Value] - CALCULATE(MAX(Table[Value]), ALLEXCEPT(Table, Table[Customer]), Table[Date] = _prevDate )

do not hesitate to give a kudo to useful posts and mark solutions as solution
LinkedIn

This worked, thank you.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.