Есть таблица, где в первой колонке time введено время
Нужно сделать округление этого времени через Power Query в радиусе ближайших 15 минут, как показано во втором столбце, в таком формате:
- 00:10:00 до 00:15:00
- 00:35:00 до 00:30:00
- 00:40:00 до 00:45:00
- 00:53:00 до 01:00:00
- 01:13:00 до 01:15:00
А затем перевести эти округления в десятичную форму, как показано в 3-м столбце, в таком виде:
- 00:15:00 в 0,25
- 00:30:00 в 0,5
- 00:45:00 в 0,75
- 01:00:00 в 1
- 01:15:00 в 1,25
и так далее с разрядами, из расчета, что каждые 15 минут равно 0,25
Подскажите пожалуйста, есть ли способ в Power Query это реализовать? Если что непонятно, спрашивайте. Заранее спасибо!
P.S. почему именно сначала округление, а затем преобразование в десятичность? В акц-бд таким алгоритмом получилось сделать. А в PQ не знаю, может алгоритм другой))
Заметил одно несоответствие: в таблице время 3:07:10 (выделил цветом) округляется через Power Query до 3:00:00, однако согласно ТЗ должно округляться до 3:15:00 (до 15 минут).
Остальное все округляется корректно.
Возможно как_то дополнить данный код, чтобы ничего не сломать?
Код
Table.TransformColumns(#"11", {{"пп", each Time.From(Number.Round( _ * 24 * 4, 0 ) / ( 24 * 4 )), type time}})
Raven2009 написал: время 3:07:10 (выделил цветом) округляется через Power Query до 3:00:00, однако согласно ТЗ должно округляться до 3:15:00 (до 15 минут).
Это как? А 10,45 до целых тоже должно округляться до 11?
На всякий случай... Колонка, которую преобразуем изначально должна быть в формате "type number". Шаг, который проделываем подразумевает изменение уже существующей колонки
Код
#"Округление времени вниз до часа" = Table.TransformColumns(#"Название предыдущего шага", {{"Название колонки, которую необходимо округлить", each Time.From(Number.RoundDown( _ * 24 * 1, 0 ) / ( 24 * 1 )), type time}})
#"Округление времени вниз до 30 мин = Table.TransformColumns(#"Название предыдущего шага", {{"Название колонки, которую необходимо округлить", each Time.From(Number.RoundDown( _ * 24 * 2, 0 ) / ( 24 * 2 )), type time}})
#"Округление времени вниз до 20 мин = Table.TransformColumns(#"Название предыдущего шага", {{"Название колонки, которую необходимо округлить", each Time.From(Number.RoundDown( _ * 24 * 3, 0 ) / ( 24 * 3 )), type time}})
#"Округление времени вниз до 15 мин = Table.TransformColumns(#"Название предыдущего шага", {{"Название колонки, которую необходимо округлить", each Time.From(Number.RoundDown( _ * 24 * 4, 0 ) / ( 24 * 4 )), type time}})
#"Округление времени вниз до 10 мин = Table.TransformColumns(#"Название предыдущего шага", {{"Название колонки, которую необходимо округлить", each Time.From(Number.RoundDown( _ * 24 * 6, 0 ) / ( 24 * 6 )), type time}})
Если заменить Number.RoundDown на Number.RoundUp - произойдет округление вверх с соответствующими интервалами времени.
P.S. Мне пригодилось при расчете количества кассовых операций за временной промежуток с интервалом в 30 мин.