How to do it...

To implement this recipe, do the following:

  1. Create a column in the R05_Table table using the following formula:
Net Work Duration = 
VAR __startTime = TIMEVALUE("7:30 AM")
VAR __endTime = TIMEVALUE("6:00 PM")
VAR __Start = 'R05_Table'[Start]
VAR __End = 'R05_Table'[End]
VAR __WeekdayStart = WEEKDAY(__Start , 2)
VAR __WeekdayEnd = WEEKDAY(__End , 2)
VAR __NetWorkDays =
COUNTX(
FILTER(
ADDCOLUMNS(
CALENDAR(__Start,__End),
"WeekDay",
WEEKDAY([Date],2)
),
[WeekDay]<6
),
[Date]
)
VAR __fullDayMinutes = DATEDIFF(__startTime , __endTime , MINUTE)
VAR __fullDays =
SWITCH(TRUE(),
__WeekdayStart > 5 && __WeekdayEnd > 5 , __NetWorkDays,
__WeekdayStart > 5 || __WeekdayEnd > 5 , __NetWorkDays - 1,
__NetWorkDays < 2 , 0,
__NetWorkDays - 2
)
VAR __fullDaysDuration = __fullDays * __fullDayMinutes
VAR __startDayTime = TIME( HOUR(__Start) , MINUTE(__Start) , SECOND(__Start) )
VAR __startDayDuration = DATEDIFF(__startDayTime , __endTime , MINUTE)
VAR __endDayTime = TIME( HOUR(__End) , MINUTE(__End) , SECOND(__End) )
VAR __endDayDuration = DATEDIFF(__startTime , __endDayTime , MINUTE)
RETURN
IF(
__NetWorkDays = 1,
DATEDIFF(__Start , __End , MINUTE),
__fullDaysDuration + __startDayDuration + __endDayDuration
)