Forum Discussion

STS_Joshua's avatar
STS_Joshua
Helper II
7 years ago
Solved

DateDiff between filtered rows

Hi All,

 

I have a table like so:

TransIDModAtModByEventID
11:27:20 PMBobPick
11:26:59 PMBobPick
21:26:48 PMJillPick
31:26:24 PMHarryPick
21:25:39 PMJillPick
31:24:59 PMHarryPick
11:24:09 PMBobPick
21:23:27 PMJillPick
31:20:51 PMHarryPick

 

 

What I want to show is the time differences between each row with that changing dynamically as the table is filtered like so:

TransIDModAtModByEventIDTimeDiff(In Seconds)
11:27:20 PMBobPick21
11:26:59 PMBobPick11
21:26:48 PMJillPick24
31:26:24 PMHarryPick45
21:25:39 PMJillPick40
31:24:59 PMHarryPick50
11:24:09 PMBobPick42
21:23:27 PMJillPick156
31:20:51 PMHarryPick0

 

 

Then Filtered:

TransIDModAtModByEventIDTimeDiff(In Seconds)
11:27:20 PMBobPick21
11:26:59 PMBobPick170
11:24:09 PMBobPick0

 

 

Thanks!

  • Hello STS_Joshua 

    Give this a try.

    TimeDiff(In Seconds) = 
    VAR CurrentRowTime = SELECTEDVALUE ( 'Table'[ModAt] )
    VAR TimeSec = 
    DATEDIFF (
        CALCULATE ( MAX ( 'Table'[ModAt] ),
            ALLSELECTED ( 'Table' ),
            'Table'[ModAt] < CurrentRowTime ),
        CurrentRowTime, SECOND )
    RETURN
        IF ( ISBLANK( TimeSec ), 0, TimeSec )

  • That's odd, the same change works for me:

    TimeDiff(In Seconds) TransID = 
    VAR CurrentRowTime = SELECTEDVALUE ( 'Table'[ModAt] )
    VAR TransID = SELECTEDVALUE ( 'Table'[TransID] )
    VAR TimeSec = 
    DATEDIFF (
        CALCULATE ( MAX ( 'Table'[ModAt] ),
            ALLSELECTED ( 'Table' ),
            'Table'[ModAt] < CurrentRowTime,
            'Table'[TransID] = TransID ),
        CurrentRowTime, SECOND )
    RETURN
        IF ( ISBLANK( TimeSec ), 0, TimeSec )

6 Replies

  • Hello STS_Joshua 

    Give this a try.

    TimeDiff(In Seconds) = 
    VAR CurrentRowTime = SELECTEDVALUE ( 'Table'[ModAt] )
    VAR TimeSec = 
    DATEDIFF (
        CALCULATE ( MAX ( 'Table'[ModAt] ),
            ALLSELECTED ( 'Table' ),
            'Table'[ModAt] < CurrentRowTime ),
        CurrentRowTime, SECOND )
    RETURN
        IF ( ISBLANK( TimeSec ), 0, TimeSec )

    • STS_Joshua's avatar
      STS_Joshua
      Helper II

      Thanks for the answer, I have a followup though. Is there a way to display the DateDiff grouped for each order when unfiltered? Like so:

       

      TransIDModAtModByEventIDTimeDiff(In Seconds)
      11:27:20 PMBobPick21
      11:26:59 PMBobPick170
      21:26:48 PMJillPick24
      31:26:24 PMHarryPick45
      21:25:39 PMJillPick132
      31:24:59 PMHarryPick248
      11:24:09 PMBobPick0
      21:23:27 PMJillPick0
      31:20:51 PMHarryPick0

       

      I tried changing your calculation some but did not get what I wanted:

      TimeDiff = 
      VAR CurrentRowTime = SELECTEDVALUE ( 'Table'[ModAt] )
      VAR CurrentTransID = SELECTEDVALUE( 'Table'[TransID])
      VAR TimeSec = 
      DATEDIFF (
          CALCULATE ( MAX ('Table'[ModAt]),
              'Table'[TransID]=CurrentTransID,
              'Table'[ModAt] < CurrentRowTime ),
          CurrentRowTime, SECOND )
      RETURN
          IF ( ISBLANK( TimeSec ), 0, TimeSec )

       

       

      • jdbuchanan71's avatar
        jdbuchanan71
        Super User

        That's odd, the same change works for me:

        TimeDiff(In Seconds) TransID = 
        VAR CurrentRowTime = SELECTEDVALUE ( 'Table'[ModAt] )
        VAR TransID = SELECTEDVALUE ( 'Table'[TransID] )
        VAR TimeSec = 
        DATEDIFF (
            CALCULATE ( MAX ( 'Table'[ModAt] ),
                ALLSELECTED ( 'Table' ),
                'Table'[ModAt] < CurrentRowTime,
                'Table'[TransID] = TransID ),
            CurrentRowTime, SECOND )
        RETURN
            IF ( ISBLANK( TimeSec ), 0, TimeSec )