Power Query:将文本格式的时分数据转换为Duration格式
在Power Query的M语言中将文本时间转换为Duration格式
当然有对应的语法,M语言提供了直接的函数和灵活的自定义处理方式,以下是针对不同文本格式的解决方案:
1. 直接使用Duration.FromText函数(适用于"hh:mm"格式文本)
如果你的文本列格式是标准的小时:分钟形式(比如"01:45"、"2:30"这类带/不带前导零的格式),可以直接调用Duration.FromText函数完成转换:
Duration.FromText([你的时间文本列名])
这个函数会自动解析文本,返回对应的Duration类型值(比如#duration(0,1,45,0)代表1小时45分钟)。
2. 自定义拆分转换(适用于非标准格式文本)
如果你的文本格式不是hh:mm(比如包含中文描述,如"3小时20分"),可以通过拆分文本提取小时和分钟数值,再用Duration.From构建Duration:
let // 拆分文本,这里以":"分隔为例,可根据实际格式调整分隔符 splitParts = Text.Split([你的时间文本列名], ":"), // 提取小时并转为数值 hourValue = Number.From(List.First(splitParts)), // 提取分钟并转为数值 minuteValue = Number.From(List.Last(splitParts)) in // 构建Duration:#duration(天, 小时, 分钟, 秒) Duration.From({0, hourValue, minuteValue, 0})
3. 错误处理(避免格式错误导致失败)
如果列中存在格式不规范的文本,可以用try otherwise捕获错误,返回空值或自定义提示:
try Duration.FromText([你的时间文本列名]) otherwise null
转换完成后,你可以直接对Duration列进行月度汇总(比如用List.Sum函数),或者通过Duration.TotalHours([Duration列])将时长转为总小时数,方便在仪表盘中进行可视化统计。
内容的提问来源于stack exchange,提问作者Neri Kim
相关产品推荐
相关产品推荐

