Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hello everyone.
I would like help in calculating the time between opening and closing date of a service order.
I need this time for "useful days" only, ignoring the time outside the useful day range.
I will post the link for the a sample file, that already have a date table with the classification for holidays, weekends and useful days.
sample file: https://drive.google.com/open?id=1CgF7c_v3DQD3OMCXGAr3DhEqr3BEda9E
Solved! Go to Solution.
Hello @bolabuga
Well, it's long but it should work for you.
TOTAL MINUTES IN USEFUL DAYS = VAR OpenDate = DATE ( YEAR ( 'ORDERS DATE'[SERV. ORDER OPENING DATE] ), MONTH ( 'ORDERS DATE'[SERV. ORDER OPENING DATE] ), DAY ( 'ORDERS DATE'[SERV. ORDER OPENING DATE] ) ) VAR CloseDate = DATE ( YEAR ( 'ORDERS DATE'[SERV. ORDER CLOSING DATE] ), MONTH ( 'ORDERS DATE'[SERV. ORDER CLOSING DATE] ), DAY ( 'ORDERS DATE'[SERV. ORDER CLOSING DATE] ) ) VAR SingleDayMin = IF ( OpenDate = CloseDate, IF ( LOOKUPVALUE ( 'DATE TABLE'[WORKDAYFLAG], 'DATE TABLE'[DATE], OpenDate ) = 0, 0, DATEDIFF ( 'ORDERS DATE'[SERV. ORDER OPENING DATE], 'ORDERS DATE'[SERV. ORDER CLOSING DATE], MINUTE ) ) ) VAR OpenDateMin = IF ( OpenDate = CloseDate || LOOKUPVALUE ( 'DATE TABLE'[WORKDAYFLAG], 'DATE TABLE'[DATE], OpenDate ) = 0, 0, DATEDIFF ( TIME ( HOUR ( 'ORDERS DATE'[SERV. ORDER OPENING DATE] ), MINUTE ( 'ORDERS DATE'[SERV. ORDER OPENING DATE] ), 0 ), TIME ( 0, 0, 0 ) + 1, MINUTE ) ) VAR CloseDateMin = IF ( OpenDate = CloseDate || LOOKUPVALUE ( 'DATE TABLE'[WORKDAYFLAG], 'DATE TABLE'[DATE], CloseDate ) = 0, 0, DATEDIFF ( TIME ( 0, 0, 0 ), TIME ( HOUR ( 'ORDERS DATE'[SERV. ORDER CLOSING DATE] ), MINUTE ( 'ORDERS DATE'[SERV. ORDER CLOSING DATE] ), 0 ), MINUTE ) ) VAR MidDaysMin = CALCULATE ( SUM ( 'DATE TABLE'[WORKDAYFLAG] ), FILTER ( 'DATE TABLE', 'DATE TABLE'[DATE] > OpenDate && 'DATE TABLE'[DATE] < CloseDate ) ) * 24 * 60 RETURN OpenDateMin + CloseDateMin + MidDaysMin + SingleDayMin
Hello @bolabuga
Well, it's long but it should work for you.
TOTAL MINUTES IN USEFUL DAYS = VAR OpenDate = DATE ( YEAR ( 'ORDERS DATE'[SERV. ORDER OPENING DATE] ), MONTH ( 'ORDERS DATE'[SERV. ORDER OPENING DATE] ), DAY ( 'ORDERS DATE'[SERV. ORDER OPENING DATE] ) ) VAR CloseDate = DATE ( YEAR ( 'ORDERS DATE'[SERV. ORDER CLOSING DATE] ), MONTH ( 'ORDERS DATE'[SERV. ORDER CLOSING DATE] ), DAY ( 'ORDERS DATE'[SERV. ORDER CLOSING DATE] ) ) VAR SingleDayMin = IF ( OpenDate = CloseDate, IF ( LOOKUPVALUE ( 'DATE TABLE'[WORKDAYFLAG], 'DATE TABLE'[DATE], OpenDate ) = 0, 0, DATEDIFF ( 'ORDERS DATE'[SERV. ORDER OPENING DATE], 'ORDERS DATE'[SERV. ORDER CLOSING DATE], MINUTE ) ) ) VAR OpenDateMin = IF ( OpenDate = CloseDate || LOOKUPVALUE ( 'DATE TABLE'[WORKDAYFLAG], 'DATE TABLE'[DATE], OpenDate ) = 0, 0, DATEDIFF ( TIME ( HOUR ( 'ORDERS DATE'[SERV. ORDER OPENING DATE] ), MINUTE ( 'ORDERS DATE'[SERV. ORDER OPENING DATE] ), 0 ), TIME ( 0, 0, 0 ) + 1, MINUTE ) ) VAR CloseDateMin = IF ( OpenDate = CloseDate || LOOKUPVALUE ( 'DATE TABLE'[WORKDAYFLAG], 'DATE TABLE'[DATE], CloseDate ) = 0, 0, DATEDIFF ( TIME ( 0, 0, 0 ), TIME ( HOUR ( 'ORDERS DATE'[SERV. ORDER CLOSING DATE] ), MINUTE ( 'ORDERS DATE'[SERV. ORDER CLOSING DATE] ), 0 ), MINUTE ) ) VAR MidDaysMin = CALCULATE ( SUM ( 'DATE TABLE'[WORKDAYFLAG] ), FILTER ( 'DATE TABLE', 'DATE TABLE'[DATE] > OpenDate && 'DATE TABLE'[DATE] < CloseDate ) ) * 24 * 60 RETURN OpenDateMin + CloseDateMin + MidDaysMin + SingleDayMin
Thanks!!!
I did serveral tests and it is working.
Lets see how it will performe in my much larger data base :).
I have some other bussiness rules, like if the service was open and closed at a weekend / holiday, instead of "zero", i should use the total time needed to solve the client problem, but i think i can, from your code, solve the other "rules".
Thanks again!!
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
109 | |
98 | |
77 | |
66 | |
54 |
User | Count |
---|---|
144 | |
104 | |
100 | |
86 | |
64 |