Forum Discussion

seb_BMW's avatar
seb_BMW
New Member
9 years ago
Solved

compute time difference between two lines in table

I have the following table:

 

Nr      position       time

1            in              12:23:10

2            in              12:25:19

1            out            12:28:59

3            in              13:00:00

2            out            13:02:10

 

and want to compute the time difference between in and out of each number, so that i have in this example:

 

Nr          diff

1            00:05:49

2            00:06:51

3            null     (or another text like "in")

 

how can i do this ? 

thank you very much

 

  • Anonymous's avatar
    Anonymous
    9 years ago

    You're looking for the Pivot function.

     

    • Pivot on Position (Value is Time, and be sure not to aggregate)
    • Use M to subtract the resulting in/out column values
    • Convert datatype to the Duration type

    Screenshots:

     

    The line of M:

    #"Added Difference" = Table.AddColumn(#"Pivoted Column", "Diff", each [out] - [in]),
  • Hi seb_BMW,

     

    Alternatively, you can achieve this in DAX.

     

    Create a calculated table based on below formula.

    new table =
    SUMMARIZE (
        'time difference',
        'time difference'[Nr],
        "time diff", DATEDIFF (
            MIN ( 'time difference'[time] ),
            MAX ( 'time difference'[time] ),
            SECOND
        )
    )

    Add a calculated column in order to format the time difference.

    Column =
    IF (
        'new table'[time diff] = 0,
        BLANK (),
        INT ( 'new table'[time diff] / 3600 )
            & ":"
            & INT ( MOD ( 'new table'[time diff], 3600 ) / 60 )
            & ":"
            & MOD ( MOD ( 'new table'[time diff], 3600 )60 )
    )

3 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    You're looking for the Pivot function.

     

    • Pivot on Position (Value is Time, and be sure not to aggregate)
    • Use M to subtract the resulting in/out column values
    • Convert datatype to the Duration type

    Screenshots:

     

    The line of M:

    #"Added Difference" = Table.AddColumn(#"Pivoted Column", "Diff", each [out] - [in]),
  • v-yulgu-msft's avatar
    v-yulgu-msft
    Microsoft Employee

    Hi seb_BMW,

     

    Alternatively, you can achieve this in DAX.

     

    Create a calculated table based on below formula.

    new table =
    SUMMARIZE (
        'time difference',
        'time difference'[Nr],
        "time diff", DATEDIFF (
            MIN ( 'time difference'[time] ),
            MAX ( 'time difference'[time] ),
            SECOND
        )
    )

    Add a calculated column in order to format the time difference.

    Column =
    IF (
        'new table'[time diff] = 0,
        BLANK (),
        INT ( 'new table'[time diff] / 3600 )
            & ":"
            & INT ( MOD ( 'new table'[time diff], 3600 ) / 60 )
            & ":"
            & MOD ( MOD ( 'new table'[time diff], 3600 )60 )
    )
  • v-yulgu-msft's avatar
    v-yulgu-msft
    Microsoft Employee

    Hi seb_BMW,

     

    Have you worked it out? If so, would you please mark the corresponding reply as an answer? If you still have any concern, please feel free to ask.

     

    Regards,
    Yuliana Gu