Округлите Timstamp до ближайшего 15-минутного интервала в bigquery - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь округлить поле datetime до ближайшего 15-минутного интервала с помощью стандартного sql bigquery, пробовал datetime_trunc, но оно не позволяет округлить до ближайших X минут

2018-10-24 01:05:00 to 2018-10-24 01:00:00
2018-10-24 01:08:00 to 2018-10-24 01:15:00
2018-10-24 01:12:00 to 2018-10-24 01:15:00

любыми другими способами для достиженияВыше преобразование в БК стандарт sql?

Спасибо,

1 Ответ

0 голосов
/ 28 октября 2018

Ниже для стандартного SQL BigQuery (при условии, что ваше поле имеет тип TIMESTAMP, как указано в заголовке вопроса)

TIMESTAMP_SECONDS(900 * DIV(UNIX_SECONDS(dt_from) + 450, 900))   

Вы можете проверить, поиграть с ним, используя фиктивные данные из вашего вопроса

#standardSQL
WITH `project.dataset.table` AS (
  SELECT TIMESTAMP '2018-10-24 01:05:00' dt_from UNION ALL
  SELECT '2018-10-24 01:08:00' UNION ALL
  SELECT '2018-10-24 01:12:00'
)
SELECT dt_from, TIMESTAMP_SECONDS(900 * DIV(UNIX_SECONDS(dt_from) + 450, 900)) dt_to
FROM `project.dataset.table`  

с результатом

Row dt_from                 dt_to    
1   2018-10-24 01:05:00 UTC 2018-10-24 01:00:00 UTC  
2   2018-10-24 01:08:00 UTC 2018-10-24 01:15:00 UTC  
3   2018-10-24 01:12:00 UTC 2018-10-24 01:15:00 UTC    

В случае, если ваше поле имеет тип DATETIME (как указано в самом вопросе) - вы можете использовать приведенную ниже версию выше

#standardSQL
WITH `project.dataset.table` AS (
  SELECT DATETIME '2018-10-24 01:05:00' dt_from UNION ALL
  SELECT '2018-10-24 01:08:00' UNION ALL
  SELECT '2018-10-24 01:12:00' 
)
SELECT dt_from, DATETIME(TIMESTAMP_SECONDS(900 * DIV(UNIX_SECONDS(TIMESTAMP(dt_from)) + 450, 900))) dt_to
FROM `project.dataset.table`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...