今天分享一个数据处理的小技巧。
最近被星友问到文本格式的时间如何转换为数字时间的问题,本文就来介绍一种简易的转换方式,如果你恰好碰到这种问题,应该会有帮助。
模拟示例数据如下图:
在这些时间字符串中,有的是完整的时分秒,而有的只有小时或者分钟,对于这样的字符串显然不能直接转换为标准的时间或者数值数据,如果想把这样的文本转换为数字的秒数,应该怎么做呢?
基本思路是将文本的小时、分钟和秒根据单位,替换为相应的计算表达式,然后运行计算即可,下面就来看看PowerQuery的具体转换方式。
导入PowerQuery以后,选中这一列,右键>替换值:
将"小时"替换为"*3600 ":
同样的方式,再做两次替换,将"分钟"替换为"*60 "、将"秒"替换为空,就可以将以上的时间字符串转换为这样的数学表达式:
然后利用M函数Expression.Evaluate来计算这个表达式,添加自定义列:
Expression.Evaluate(
Text.TrimEnd([时间]," ")
)
因为数据中有些时间的秒是不全的,导致上面的替换操作后,有的值最后带有“ ”,所以这里用了Text.TrimEnd先将尾部的字符" "清除掉,然后再计算这个表达式,结果如下:
这样就轻松从时间文本得到了具体的数字,如果想要的是小时数,在这个基础上再除以3600即可。
解决这种需求的方法,当然不止这一种,但应该是最简单、最易于理解的做法,很多数据的处理,不要把它想的太复杂,大部分需求都可以灵活使用PowerQuery中的界面操作来完成。
更多精彩采悟 | PowerBI星球