我为类似的任务使用了自定义函数
RoundDown = (Time as time) as time =>
let
Minutes = Time.Hour(Time) * 60 + Time.Minute(Time),
RoundedMinutes = Number.RoundDown(Minutes / 5) * 5,
Result = #time(0, 0, 0) + #duration(0, 0, RoundedMinutes, 0)
in
Result
和
RoundUp = (Time as time) as time =>
let
Minutes = Time.Hour(Time) * 60 + Time.Minute(Time),
RoundedMinutes = Number.RoundUp(Minutes / 5) * 5,
Result = #time(0, 0, 0) + #duration(0, 0, RoundedMinutes, 0)
in
Result
例子
let
Source = Table.FromRecords({
[Column1 = #time(1, 12, 0)]
}),
Down = Table.AddColumn(Source, "Down", each RoundDown([Column1]), type time),
Up = Table.AddColumn(Down, "Up", each RoundUp([Column1]), type time)
...
in
Up