Skip to main content
Announcements
See what Drew Clarke has to say about the Qlik Talend Cloud launch! READ THE BLOG
cancel
Showing results for 
Search instead for 
Did you mean: 
rakeshkumar1890
Creator
Creator

Calculate only Saturday working hours calculation

Hi folks,

here I want to calculate working hours only for Saturday, I was tried too many thread but not found for Saturday working hours.

Suppose I have

Start_Date : 06/16/2018 10:40:30 AM, 06/23/2018 09:15:30 AM, 06/30/2018 07:30:35 AM

End_Date  : 06/16/2018 12:00:05 PM, 06/23/2018 17:10:05 PM, 07/01/2018 00:00:35 AM

Working Hours time

Start_Time : 08 am

End_Time : 17 pm

Lunch_Start : 13 pm

Lunch_End : 13:30 pm

Thanks for advanced and immediate response

Regards

Rakesh

1 Solution

Accepted Solutions
rakeshkumar1890
Creator
Creator
Author

Now I using this script which is well worked for Monday to Friday,

but the requirement is for Saturday calculation between Start Hours 8:30 am to End 17:30 pm

Result.png

LET vSatStartHour = 8;

LET vSatEndHour = 17;

LET vSatWorkingHourPerDay = ($(vSatEndHour) -$(vSatStartHour))-($(vLunchEnd)-$(vLunchStart));

LET vStartHour = 12;

LET vEndHour = 21;

LET vLunchStart =0;

LET vLunchEnd =0;

LET vWorkingHourPerDay = ($(vEndHour) -$(vStartHour))-($(vLunchEnd)-$(vLunchStart));

Holidays:

LOAD Concat(chr(39)&Holidays&chr(39),',') as Holidays Inline [

Holidays

08/04/2018

25/04/2018

];

LET vHolidays = Peek('Holidays',0,'Holidays');

SLA_Analysis:

LOAD *,

     Interval(rangesum(round( rangesum(

             NetWorkDays(START_TIME+1,END_TIME-1,$(vHolidays)) * MakeTime($(vWorkingHourPerDay)), // 12 hours per workday, for all day inbetween the period, excluding bounderies

          

             if(NetWorkDays(END_TIME,END_TIME,$(vHolidays)) ,

             rangesum(rangemin(frac(END_TIME),MakeTime($(vLunchStart)))- rangemin(frac(END_TIME),MakeTime($(vStartHour))) ,

             rangemin(frac(END_TIME),MakeTime($(vEndHour))) - rangemin(frac(END_TIME),MakeTime($(vLunchEnd)))),0), // working hours last day

          

             if(NetWorkDays(START_TIME,START_TIME,$(vHolidays)),

             rangesum(MakeTime($(vLunchStart)) - rangemin(rangemax(frac(START_TIME), MakeTime($(vStartHour))),MakeTime($(vLunchStart))),

             MakeTime($(vEndHour)) - rangemax(rangemin(frac(START_TIME), MakeTime($(vEndHour))),MakeTime($(vLunchEnd)))),0), // working first day

          

             if(NetWorkDays(START_TIME,START_TIME,$(vHolidays)) and floor(START_TIME)=floor(END_TIME),-MakeTime($(vWorkingHourPerDay))) // If the same day then correct the hours

             )*24,0.01))/24,'mm') AS Exclude_Saturday,

         

         

         

LOAD *,

            timestamp(timestamp#(START_DATE,'MM/DD/YYYY hh:mm:ss TT')) as START_TIME,

            timestamp(timestamp#(END_DATE,'MM/DD/YYYY hh:mm:ss TT')) as END_TIME;

View solution in original post

2 Replies
Anonymous
Not applicable

Hope you can try like this.

Ex:-

Interval match(Actual Date) Load StartDate, EndDate

Resident AssemblyLine;

rakeshkumar1890
Creator
Creator
Author

Now I using this script which is well worked for Monday to Friday,

but the requirement is for Saturday calculation between Start Hours 8:30 am to End 17:30 pm

Result.png

LET vSatStartHour = 8;

LET vSatEndHour = 17;

LET vSatWorkingHourPerDay = ($(vSatEndHour) -$(vSatStartHour))-($(vLunchEnd)-$(vLunchStart));

LET vStartHour = 12;

LET vEndHour = 21;

LET vLunchStart =0;

LET vLunchEnd =0;

LET vWorkingHourPerDay = ($(vEndHour) -$(vStartHour))-($(vLunchEnd)-$(vLunchStart));

Holidays:

LOAD Concat(chr(39)&Holidays&chr(39),',') as Holidays Inline [

Holidays

08/04/2018

25/04/2018

];

LET vHolidays = Peek('Holidays',0,'Holidays');

SLA_Analysis:

LOAD *,

     Interval(rangesum(round( rangesum(

             NetWorkDays(START_TIME+1,END_TIME-1,$(vHolidays)) * MakeTime($(vWorkingHourPerDay)), // 12 hours per workday, for all day inbetween the period, excluding bounderies

          

             if(NetWorkDays(END_TIME,END_TIME,$(vHolidays)) ,

             rangesum(rangemin(frac(END_TIME),MakeTime($(vLunchStart)))- rangemin(frac(END_TIME),MakeTime($(vStartHour))) ,

             rangemin(frac(END_TIME),MakeTime($(vEndHour))) - rangemin(frac(END_TIME),MakeTime($(vLunchEnd)))),0), // working hours last day

          

             if(NetWorkDays(START_TIME,START_TIME,$(vHolidays)),

             rangesum(MakeTime($(vLunchStart)) - rangemin(rangemax(frac(START_TIME), MakeTime($(vStartHour))),MakeTime($(vLunchStart))),

             MakeTime($(vEndHour)) - rangemax(rangemin(frac(START_TIME), MakeTime($(vEndHour))),MakeTime($(vLunchEnd)))),0), // working first day

          

             if(NetWorkDays(START_TIME,START_TIME,$(vHolidays)) and floor(START_TIME)=floor(END_TIME),-MakeTime($(vWorkingHourPerDay))) // If the same day then correct the hours

             )*24,0.01))/24,'mm') AS Exclude_Saturday,

         

         

         

LOAD *,

            timestamp(timestamp#(START_DATE,'MM/DD/YYYY hh:mm:ss TT')) as START_TIME,

            timestamp(timestamp#(END_DATE,'MM/DD/YYYY hh:mm:ss TT')) as END_TIME;