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

July 7 - July 17 | Round 2 of the Power BI Dataviz World Championships. Don't miss your chance! Learn more

Reply
Daxtothemax
Helper I
Helper I

Calculating Duration Change

Looking for a way in Power BI to calculate the difference between values in the same column. Need the day over day change to the remaining duration. I have a formula that works but an issue has come up when durations are actually increased.  I would prefer to not show negative change and the change be based off the original duration only. Please see existing formula and example data below. 

 

Daxtothemax_0-1649699977186.png

 

 

Daxtothemax_1-1649699977046.png

 

 

 

 

 

Any help is greatly appreciated!

1 ACCEPTED SOLUTION
Anonymous
Not applicable

Hi @Daxtothemax ,

You can create another new calculated column as below to get it, please find the details in the attachment.

Column = 
VAR _negdate =
    CALCULATE (
        MAX ( DS[Date] ),
        FILTER ( DS, DS[Task] = EARLIER ( DS[Task] ) && DS[Change] < 0 )
    )
VAR _negcount =
    CALCULATE (
        COUNT ( DS[Change] ),
        FILTER ( DS, DS[Task] = EARLIER ( DS[Task] ) && DS[Change] < 0 )
    )
VAR _mindvalue =
    CALCULATE (
        MAX ( DS[Remaining Duration (Hours)] ),
        FILTER ( DS, DS[Task] = EARLIER ( DS[Task] ) && DS[Date] = MIN ( DS[Date] ) )
    )
RETURN
    IF (
        ISBLANK ( _negcount ),
        [Change],
        IF ( DS[Change] < 0, 0, IF ( DS[Date] < _negdate, DS[Change], _mindvalue ) )
    )

yingyinr_0-1649933917487.png

Best Regards

View solution in original post

2 REPLIES 2
Anonymous
Not applicable

Hi @Daxtothemax ,

You can create another new calculated column as below to get it, please find the details in the attachment.

Column = 
VAR _negdate =
    CALCULATE (
        MAX ( DS[Date] ),
        FILTER ( DS, DS[Task] = EARLIER ( DS[Task] ) && DS[Change] < 0 )
    )
VAR _negcount =
    CALCULATE (
        COUNT ( DS[Change] ),
        FILTER ( DS, DS[Task] = EARLIER ( DS[Task] ) && DS[Change] < 0 )
    )
VAR _mindvalue =
    CALCULATE (
        MAX ( DS[Remaining Duration (Hours)] ),
        FILTER ( DS, DS[Task] = EARLIER ( DS[Task] ) && DS[Date] = MIN ( DS[Date] ) )
    )
RETURN
    IF (
        ISBLANK ( _negcount ),
        [Change],
        IF ( DS[Change] < 0, 0, IF ( DS[Date] < _negdate, DS[Change], _mindvalue ) )
    )

yingyinr_0-1649933917487.png

Best Regards

Greg_Deckler
Community Champion
Community Champion

@Daxtothemax This is a variation of MTBF. 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....
The basic pattern is:
Column = 
  VAR __Current = [Value]
  VAR __PreviousDate = MAXX(FILTER('Table','Table'[Date] < EARLIER('Table'[Date])),[Date])

  VAR __Previous = MAXX(FILTER('Table',[Date]=__PreviousDate),[Value])
RETURN
  __Current - __Previous



Follow on LinkedIn
@ 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!:
DAX For Humans

DAX is easy, CALCULATE makes DAX hard...

Helpful resources

Announcements
FabCon and SQLCon Barcelona 2026

FabCon & SQLCon – Barcelona 2026

Join us in Barcelona for FabCon and SQLCon, the Fabric, Power BI, SQL, and AI community event. Save €200 with code FABCMTY200.

60 days of Data Days Carousel

Data Days 2026

Join Fabric Data Days 2026: 60 days of free live/on-demand sessions, challenges, study groups, and certification opportunities.

Power BI DataViz World Championships carousel

Power BI DataViz World Championships - June 2026

A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.