Forum Discussion

jaymccorp's avatar
jaymccorp
Frequent Visitor
7 years ago
Solved

Running total with date reset

I am trying to do a fatigue calculation that does a running total of hours worked, and days in a row, but it resets when the person does not come in for work for one day.  I have looked at the past posts, and can get the running total, but I do not know how to get the sum to restart when the person does not come in.  This is what I want it do to:

 

DateEmployee NumberTime - HoursFatigue Hrs - running totalDays in row
6/19/1810027.427.421
6/20/1810027.9215.342
6/21/1810021.1816.523
6/23/1810021.731.731
6/24/1810020.972.72
6/25/1810021.273.973
7/2/1810025.085.081
7/10/1810020.650.651
7/11/1810023.54.152
7/13/1810021.651.651
6/18/1810049.779.771
6/19/1810049.719.472
6/20/18100411.6731.143
6/21/1810049.640.744
6/22/1810048.1248.865
6/23/181004149.866
6/25/1810049.79.71
6/26/1810049.8319.532
6/27/1810049.6529.183
6/28/1810049.6538.834
7/2/1810049.839.831
7/3/1810049.7219.552
7/5/1810049.639.631
7/6/1810048.718.332
7/7/181004119.333
7/10/1810049.789.781
7/11/1810049.7719.552
7/12/1810049.629.153
7/13/1810048.4837.634
7/14/181004239.635

 

Thanks in advance for your help.  This is my first post, but I have read a lot of different posts on MANY different questions.  It has been very helpful.  Great forum!

6 Replies

  • Zubair_Muhammad's avatar
    Zubair_Muhammad
    Community Champion

    jaymccorp

     

    If you already have a days in a row column

     

    you can use this calculated column to get the running total that resets

     

    Running Total =
    VAR mydays = [Date] - [Days in row]
        + 1
    RETURN
        SUMX (
            FILTER (
                Table1,
                [Employee Number] = EARLIER ( [Employee Number] )
                    && [Date] <= EARLIER ( [Date] )
                    && [Date] >= mydays
            ),
            [Time - Hours]
        )
    
    • jaymccorp's avatar
      jaymccorp
      Frequent Visitor

      Thanks, but I do not have days in a row either.  I am tying to create the two last columns.  I have been able to get a running sum for hours, but I need it to reset when the person does not come to work for one day.  The count and the running total will then reset and start again once the person takes a day off. 

       

      Thanks for the help!

      • Zubair_Muhammad's avatar
        Zubair_Muhammad
        Community Champion

        jaymccorp

         

        In that case, to get the Days in a Row column we can first add a supporting column which determines when running total is reset

         

        FindCounterReset =
        VAR PreviousDate =
            MINX (
                TOPN (
                    1,
                    FILTER (
                        Table1,
                        [Employee Number] = EARLIER ( [Employee Number] )
                            && [Date] < EARLIER ( [Date] )
                    ),
                    [Date], DESC
                ),
                [Date]
            )
        RETURN
            IF ( [Date] <> PreviousDate + 1, "Counter reset" )
        

         

        Now we can add the Days in Row Column as follows

         

        Days in a Row =
        VAR counterstart =
            MINX (
                TOPN (
                    1,
                    FILTER (
                        Table1,
                        [Employee Number] = EARLIER ( [Employee Number] )
                            && [Date] <= EARLIER ( [Date] )
                            && [FindCounterReset] = "Counter reset"
                    ),
                    [Date], DESC
                ),
                [Date]
            )
        VAR counterend_ =
            MINX (
                TOPN (
                    1,
                    FILTER (
                        Table1,
                        [Employee Number] = EARLIER ( [Employee Number] )
                            && [Date] > EARLIER ( [Date] )
                            && [FindCounterReset] = "Counter reset"
                    ),
                    [Date], ASC
                ),
                [Date]
            )
        VAR counterend =
            IF ( counterend_ = BLANK (), DATE ( 3000, 1, 1 ), counterend_ )
        RETURN
            RANKX (
                FILTER (
                    Table1,
                    [Employee Number] = EARLIER ( [Employee Number] )
                        && [Date] >= counterstart
                        && [Date] < counterend
                ),
                [Date],
                ,
                ASC,
                DENSE
            )
        

         

        Now you can use the Column for running total in the previous post