Power Query计算两日期/时间间工作时长(总分钟数)问题排查
计算工作时段内订单处理时长的M Query问题
我正在编写M Query计算订单从进入Service Review到提交过程中,周一至周五8:00-17:00工作时段内的总分钟数。目前的问题是:当订单在周末或周五进入Service Review,且在周一提交时,计算结果不符合预期。
预期计算规则示例
- 示例1:订单于2023年1月2日周一8:00进入Service Review,2023年1月3日周二12:00提交,总时长应为720分钟,当前代码可正确计算。
- 示例2:订单于2023年1月6日周五17:00进入Service Review,2023年1月9日周一8:10提交,总时长应为10分钟。
- 示例3:订单于2023年1月7日周六或1月8日周日任意时间进入Service Review,且在周六或周日提交,总时长应为0分钟。
现有代码
NonWorkingTime = List.Transform(List.Numbers(0,15*60), each #time(17,0,0)+#duration(0,0,_,0)), SRReal = Table.AddColumn(SR, "Min in SRRR", each [a=Date.DayOfWeekName( Date.From([Service Review Date])), b = [Submitted Date]-[Service Review Date], c = if a = "Saturday" then b - #duration(2,0,0,0) else if a = "Sunday" then b - #duration(1,0,0,0) else b, d= List.Count( List.Difference( List.Transform(List.DateTimes([Service Review Date], Duration.TotalMinutes(c), #duration(0,0,1,0)), each Time.From(_)), NonWorkingTime))][d]),
修改后的测试结果
将代码中c = if a = "Friday" then b - #duration(2,0,0,0) else b,修改后,得到以下测试结果:
| 服务审核日期 | 提交日期 | SR内时长(分钟) | 预期值 | 开始日期星期 | 结束日期星期 |
|---|---|---|---|---|---|
| 1/1/2023 8:00:00 AM | 2/1/2023 12:00:00 PM | 43980 | M-F 8-5 | Sunday | Wednesday |
| 1/1/2023 4:50:00 PM | 1/2/2023 8:10:00 AM | 20 | 10 | Sunday | Monday |
| 1/5/2023 8:00:00 AM | 1/8/2023 8:10:00 AM | 3430 | Thu + Fri | Thursday | Sunday |
| 1/5/2023 4:52:00 PM | 1/6/2023 8:10:00 AM | 18 | 18 | Thursday | Friday |
| 1/5/2023 4:55:00 PM | 1/5/2023 4:58:00 PM | 3 | 3 | Thursday | Thursday |
| 1/6/2023 8:10:00 AM | 1/8/2023 8:30:00 AM | 20 | 470 (Friday ins) | Friday | Sunday |
| 1/6/2023 8:10:00 AM | 1/6/2023 8:30:00 AM | 20 | Friday | Friday | |
| 1/7/2023 4:50:00 PM | 1/9/2023 8:10:00 AM | 1460 | 10 | Saturday | Monday |
| 1/7/2023 4:55:00 PM | 1/7/2023 5:15:00 PM | 5 | 0 | Saturday | Saturday |
| 1/7/2023 4:56:00 PM | 1/8/2023 8:10:00 AM | 14 | 0 | Saturday | Sunday |
| 1/8/2023 8:00:00 AM | 1/9/2023 8:10:00 AM | 550 | 10 | Sunday | Monday |
| 1/8/2023 12:00:00 PM | 1/8/2023 12:30:00 PM | 30 | 0 | Sunday | Sunday |
内容的提问来源于stack exchange,提问作者ojmayo
相关产品推荐
相关产品推荐

