Forum Discussion
Calculate difference between two DateTime values in different rows
I'm so sorry if a similar question has been answered before, but I'm new to DAX and have been struggling to implement DAX measures I've found on this forum for calculating the difference between DateTime values in different rows.
I am working with a large dataset comprised of invoice numbers and payment statuses, and I need to dynamically calculate the time difference between two filtered statuses as follows:
Source:
Desired Output:
I would ideally like to be able to filter the Start and End Status in the output matrix with a Slicer, any help you could give me to solve this problem would be very much appreciated. Thank you for your time.
Hi saur_dash
You could try adding this calculated column to your table.
Duration = VAR MyLastDate = MINX( FILTER( 'Table1', 'Table1'[Invoice Number] = EARLIER('Table1'[Invoice Number]) && EARLIER('Table1'[Payment Status]) = "Captured" && 'Table1'[Payment Status] = "Authorised" ), 'Table1'[Event Date]) RETURN IF(MyLastDate<>BLANK(),FORMAT('Table1'[Event Date]- MyLastDate,"HH:MM:SS") )It will only show a value on rows with a status of "Captured", and the value will be the value in Hours, Mins and Seconds since the row from the same Invoice Number with a status of "Authorised"
6 Replies
- Phil_SeamarkMicrosoft Employee
HI saur_dash,
Your post was empty under Source: and Desired Output:, so can you reply and try again? :)
- saur_dashNew Member
Thanks for your reply Phil,
Sorry about the error, I've fixed the images. Any help you could give would be greatly appreciated.
- Phil_SeamarkMicrosoft Employee
Hi saur_dash
You could try adding this calculated column to your table.
Duration = VAR MyLastDate = MINX( FILTER( 'Table1', 'Table1'[Invoice Number] = EARLIER('Table1'[Invoice Number]) && EARLIER('Table1'[Payment Status]) = "Captured" && 'Table1'[Payment Status] = "Authorised" ), 'Table1'[Event Date]) RETURN IF(MyLastDate<>BLANK(),FORMAT('Table1'[Event Date]- MyLastDate,"HH:MM:SS") )It will only show a value on rows with a status of "Captured", and the value will be the value in Hours, Mins and Seconds since the row from the same Invoice Number with a status of "Authorised"
- saur_dashNew Member
Thanks for your help Phil.
I can't wait to try this!
- Phil_SeamarkMicrosoft Employee
This is what I get. I substituted your lengthy invoice numbers for much simpler version for my testing.