电源查询持续时间格式一致性

问题描述

我正在Excel中使用Power Query过滤一些.txt文件,从每个文件提取一个时间值并显示结果。 问题在于原始数据有3种不同的格式:

3:42.807
0:01:48.19
3:46

如何将它们转换为一致的格式(例如3:42.80)。 我需要显示分钟,秒,最后是毫秒。

我尝试了几种不同的Duration.ToTextDuration.From,但是我遇到了更多问题。 我也想避免添加额外的列只是为了计算持续时间格式。只能转换原始列吗?

= Table.TransformColumnTypes(#"Reordered Columns",{{"Time",type duration}})

这是我用来转换为持续时间的Power查询公式,但我不喜欢这种格式“ d.hh.mm.ss”等,它给了我错误。如果它是“持续时间”类型,但只显示分钟,秒和毫秒(3:41.23)

请帮忙吗?

docs

解决方法

我认为您无法在查询编辑器中更改给定列类型的显示格式。如果需要其他格式,则必须将其转换为文本列。

这是我修补的方式:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMrYyMdKzMDBXitWJVjKwMjC0MrHQM7QEc4FyZkqxsQA=",BinaryEncoding.Base64),Compression.Deflate)),let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Time = _t]),StandardizeFormat = Table.TransformColumns(Source,{{"Time",each Duration.ToText(Duration.FromText(if List.Count(Text.Split(_,":")) = 2 then "0:" & _ else _)),type text}}),TrimZeros = Table.TransformColumns(StandardizeFormat,each Text.TrimEnd(Text.AfterDelimiter(_,"00:0"),"0"),type text}})
in
    TrimZeros

如果没有两个冒号,if List.Count(Text.Split(_,":")) = 2 then "0:" & _ else _部分会告诉它在0:之前加一个前缀(这样转换的持续时间不会中断)。