前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Power Query里时间处理很容易出错?根本原因是……

Power Query里时间处理很容易出错?根本原因是……

作者头像
大海Power
发布2023-09-09 14:46:59
9890
发布2023-09-09 14:46:59
举报

Power Query里,日期、时间、时长、数字都是不同的类型,需要严格区分和转换,两个日期/时间相减是时长(duration),时长要经过转换才能得到相应的天时分秒等“数字”——这是跟excel里不一样的地方,也是很多朋友感觉PQ里日期时间处理困难或易错的关键。

这来自星球里一个提问:根据上下班打卡时间来计算员工每天的工作时长(以小时为单位),尤其是个别员工加班到次日凌晨的这种情况该如何通过PQ来计算?

这个问题本身并不复杂,但是,涉及到Power Query里一些时间计算的情况,和Excel里不太一样,所以,也正好借这个例子,跟大家讲讲Power Query里的时间计算问题。

首先,这个数据其实还算规范,只是打卡的时间里没有日期,所以,不能直接用两个时间进行相减,而是要通过判断,识别出来跨日的情况,然后再进行分段处理,具体解法如下:

代码语言:javascript
复制
= if [下班时间]<[上班时间]
then Duration.TotalHours(#time(24,0,0)-[上班时间])
    +Duration.TotalHours([下班时间]-#time(0,0,0))
else Duration.TotalHours([下班时间]-[上班时间])

即,如果下班时间比上班时间小,则说明跨天了,当然,这个情况无法处理工作时长超过24小时的情况(如果真存在的话,那要加特别的记录了)。

然后,如果跨天了,将工作时长分成两段进行计算,即从上班时间到晚上24时0分0秒、从0时0分0秒到下班时间两个部分。

当然,如果不跨天,就很简单了,直接用下班时间减去上班时间计算即可。

最后,对于通过时间计算出来的时间差(时长),再用Duration函数转换成所需的天、时、分、秒等单位即可。

对于日期/时间的相关处理,在Power Query里,日期、时间、时长(持续时间)是三个完全不同的概念,数据类型也完全不一样。

所以,他们之间的计算和转换,要比在Excel里直接进行加减要复杂一些,但也更容易避免一些在Excel中常见的问题,比如两个时间相减,其实结果还是个时间:

而在Power Query里,时间(包括日期、日期时间)相减是时长(持续时间):

同时,在Power Query里,日期和时间不能直接相加减:

如果要将日期列和时间列合成日期/时间列,其实也非常简单,选中这两列后,直接在菜单中点击【合并日期和时间】即可,从生成的公式可以看到,使用的是 [日期] & [时间]:

对于日期、时间、日期时间、时长,Power Query在转换和添加列的菜单里,均提供了方便快捷的菜单操作,大家可以在练习文件里,选定相应类型的列,然后多操作熟悉一下:

同时,提供了丰富的函数支持大家按需要拓展应用,这些函数的参数一般也不多,使用方法并不复杂:

总的来说,在Power Query里,灵活处理日期及时间的问题,最核心的是,大家要通过一定的练习,尽可能熟悉Power Query里严格区分的这几个概念,这样,在遇到具体工作数据时,就很容易找到对应的方法,并且在出现处理出错的情况时,也很容易定位到问题所在,找到原因,解决问题。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel到PowerBI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档