我们在之前的文章《 区分工作日,你就跟我这么做 》中讲过关于工作时间差的相关计算方法,今天我们要介绍的是如何计算两列日期时间格式数据的工作时间差。
1 计算思路
首先我们思考一下,如果不考虑工作日的话,计算两列值的时间差怎么计算呢?
按照之前文章的思路是判断开始时间和结束时间区间内日期表的行数,如果我们要改成小时,那么可以考虑把日期表扩展成小时就可以计算了。
想到这个,问题就转换为如何将日期表扩展为按小时的时间序列。这是第一种计算方式,这种方式公式比较简单。但是如果日期年份比较多,那么日期时间表行数一年就要8000多行,而且这种方式计算如果要计算更小的单位比如分钟和秒的话,性能就比较低了。
有些其实还有另外一种方式,我们想一下,日期时间差的计算只有开始时间和结束时间的日期不是完整的一整天,中间区间的天数都是完整的,那么我们可以分段计算小时差了,下面我们具体看下两种计算方式。
2 扩展日期表为小时计算小时差
首先,我们来看下如何将日期表扩展按小时的时间序列。需要准备一张Hour的表,存储的数据为一天24小时,可以使用输入数据的方式进行录入。结果如下:
接着就需要考虑如何将日期表扩展为每天的24小时,这就用到了笛卡尔积的方式,这里不是本文的重点,就不再具体介绍了,详细步骤参考文章《 在Power BI中生成笛卡尔积 》中Power Query计算方法部分。这里给出结果: