Forum Discussion

ANerat's avatar
ANerat
Regular Visitor
5 years ago
Solved

Split start time and end time into multiple rows based on shift

Hi,

 

I'm trying to achieve the transformation below. I tried multiple things but they quickly became overly complicated. I hope you can help.

 

My sample data:

 

IdStart TimeEnd Time
12020-01-05 15:20:002020-01-05 22:45:00
22020-01-11 10:20:002020-01-12 08:00:00
32020-01-14 16:55:002020-01-15 08:00:00
32020-01-15 08:00:002020-01-16 08:00:00

 

There are three shifts per day starting from 08:00 AM and ending at 08:00 AM on next day, 8 hours each.

 

Shift 1 - 08-16

Shift 2 - 16-00

Shift 3 - 00-08

 

I'd like to split each row if the event spans over multiple shifts and replace start and end times with shift start and end times until start time and end time is on the same shift.

 

Desired outcome:

 

IdStart TimeEnd Time
12020-01-05 15:20:002020-01-05 16:00:00
12020-01-05 16:00:002020-01-05 22:45:00
22020-01-11 10:20:002020-01-11 16:00:00
22020-01-11 16:00:002020-01-12 00:00:00
22020-01-12 00:00:002020-01-12 08:00:00
32020-01-14 16:55:002020-01-15 00:00:00
32020-01-15 00:00:002020-01-15 08:00:00
32020-01-15 08:00:002020-01-15 16:00:00
32020-01-15 16:00:002020-01-16 00:00:00
32020-01-16 00:00:002020-01-16 08:00:00

 

Thank you in advance!

8 Replies

    • ANerat's avatar
      ANerat
      Regular Visitor

      Thank your for solution. I haven't yet tried with my data but it should work. Can you please walk me through your steps? I'd like to understand better for future uses. Would this work with 12h shifts for example?

      • Anonymous's avatar
        Anonymous
        Not applicable

        try to adapt and see what is appening .

        replace "08" with "12".

        consider that where there is a product of 3 it is, in effect, of 24/8. In the hypothesis of two shifts of 12 hours, 24/8 becomes 24/12 = 2.

         

        Regarding the explanation, it depends on your level of knowledge.

        I can explain the basic idea of the solution or even the implementation details (there are also possibilities of different solutions using the List.generate function).

         

        If you try to study it and then say where it is not clear to you, perhaps the explanation could be more effective.

    • gvlado's avatar
      gvlado
      Advocate III

      It works 0K
      I tried to modify it to work with shifts like this:
      Shift 1 => 07:00 - 15:00
      Shift 2 => 15:00 - 23:00
      Shift 3=> 23:00 - 07:00 (next day)
      but couldn't find the solution,
      Can you, or someone, help, please?
      Thanks