今天分享一个数据处理的小技巧。

最近被星友问到文本格式的时间如何转换为数字时间的问题,本文就来介绍一种简易的转换方式,如果你恰好碰到这种问题,应该会有帮助。

模拟示例数据如下图:

powerquery如何拆分文字和数字(Query将时分秒转换为数字)(1)

在这些时间字符串中,有的是完整的时分秒,而有的只有小时或者分钟,对于这样的字符串显然不能直接转换为标准的时间或者数值数据,如果想把这样的文本转换为数字的秒数,应该怎么做呢?

基本思路是将文本的小时、分钟和秒根据单位,替换为相应的计算表达式,然后运行计算即可,下面就来看看PowerQuery的具体转换方式。

导入PowerQuery以后,选中这一列,右键>替换值:

powerquery如何拆分文字和数字(Query将时分秒转换为数字)(2)

将"小时"替换为"*3600 ":

powerquery如何拆分文字和数字(Query将时分秒转换为数字)(3)

同样的方式,再做两次替换,将"分钟"替换为"*60 "、将"秒"替换为空,就可以将以上的时间字符串转换为这样的数学表达式:

powerquery如何拆分文字和数字(Query将时分秒转换为数字)(4)

然后利用M函数Expression.Evaluate来计算这个表达式,添加自定义列:

Expression.Evaluate(

Text.TrimEnd([时间]," ")

)

powerquery如何拆分文字和数字(Query将时分秒转换为数字)(5)

因为数据中有些时间的秒是不全的,导致上面的替换操作后,有的值最后带有“ ”,所以这里用了Text.TrimEnd先将尾部的字符" "清除掉,然后再计算这个表达式,结果如下:

powerquery如何拆分文字和数字(Query将时分秒转换为数字)(6)

这样就轻松从时间文本得到了具体的数字,如果想要的是小时数,在这个基础上再除以3600即可。

解决这种需求的方法,当然不止这一种,但应该是最简单、最易于理解的做法,很多数据的处理,不要把它想的太复杂,大部分需求都可以灵活使用PowerQuery中的界面操作来完成。

更多精彩

我的新书《PowerBI商业数据分析》上市了

PowerBI业务分析技巧:利用DAX细分客户

PowerBI行级安全性(RLS)三种常见的角色规则设置

采悟 | PowerBI星球

,