Перейти к основному содержимому
Перейти к основному содержимому

Функции временных окон

Experimental feature. Learn more.
Not supported in ClickHouse Cloud

Функции временных окон возвращают включительную нижнюю и исключительную верхнюю границу соответствующего окна. Функции для работы с WindowView перечислены ниже:

tumble

Временное окно с использованием метода "tumble" назначает записи на неперекрывающиеся, непрерывные окна с фиксированной продолжительностью (interval).

Синтаксис

tumble(time_attr, interval [, timezone])

Аргументы

Возвращаемые значения

  • Включительная нижняя и исключительная верхняя граница соответствующего окна "tumble". Tuple(DateTime, DateTime).

Пример

Запрос:

SELECT tumble(now(), toIntervalDay('1'));

Результат:

┌─tumble(now(), toIntervalDay('1'))─────────────┐
│ ('2024-07-04 00:00:00','2024-07-05 00:00:00') │
└───────────────────────────────────────────────┘

tumbleStart

Возвращает включительную нижнюю границу соответствующего окна tumble.

Синтаксис

tumbleStart(time_attr, interval [, timezone]);

Аргументы

Возвращаемые значения

  • Включительная нижняя граница соответствующего окна "tumble". DateTime, Tuple или UInt32.

Пример

Запрос:

SELECT tumbleStart(now(), toIntervalDay('1'));

Результат:

┌─tumbleStart(now(), toIntervalDay('1'))─┐
│                    2024-07-04 00:00:00 │
└────────────────────────────────────────┘

tumbleEnd

Возвращает исключительную верхнюю границу соответствующего окна tumble.

Синтаксис

tumbleEnd(time_attr, interval [, timezone]);

Аргументы

Возвращаемые значения

  • Исключительная верхняя граница соответствующего окна "tumble". DateTime, Tuple или UInt32.

Пример

Запрос:

SELECT tumbleEnd(now(), toIntervalDay('1'));

Результат:

┌─tumbleEnd(now(), toIntervalDay('1'))─┐
│                  2024-07-05 00:00:00 │
└──────────────────────────────────────┘

hop

Временное окно с использованием метода "hop" имеет фиксированную продолжительность (window_interval) и перемещается на указанный интервал ("hop") (hop_interval). Если hop_interval меньше, чем window_interval, окна "hop" накладываются друг на друга. Таким образом, записи могут быть назначены нескольким окнам.

hop(time_attr, hop_interval, window_interval [, timezone])

Аргументы

Возвращаемые значения

  • Включительная нижняя и исключительная верхняя граница соответствующего окна "hop". Tuple(DateTime, DateTime)`.
примечание

Поскольку одна запись может быть назначена нескольким окнам "hop", функция возвращает только границу первого окна, когда функция hop используется без WINDOW VIEW.

Пример

Запрос:

SELECT hop(now(), INTERVAL '1' DAY, INTERVAL '2' DAY);

Результат:

┌─hop(now(), toIntervalDay('1'), toIntervalDay('2'))─┐
│ ('2024-07-03 00:00:00','2024-07-05 00:00:00')      │
└────────────────────────────────────────────────────┘

hopStart

Возвращает включительную нижнюю границу соответствующего окна hop.

Синтаксис

hopStart(time_attr, hop_interval, window_interval [, timezone]);

Аргументы

Возвращаемые значения

  • Включительная нижняя граница соответствующего окна "hop". DateTime, Tuple или UInt32.
примечание

Поскольку одна запись может быть назначена нескольким окнам "hop", функция возвращает только границу первого окна, когда функция hop используется без WINDOW VIEW.

Пример

Запрос:

SELECT hopStart(now(), INTERVAL '1' DAY, INTERVAL '2' DAY);

Результат:

┌─hopStart(now(), toIntervalDay('1'), toIntervalDay('2'))─┐
│                                     2024-07-03 00:00:00 │
└─────────────────────────────────────────────────────────┘

hopEnd

Возвращает исключительную верхнюю границу соответствующего окна hop.

Синтаксис

hopEnd(time_attr, hop_interval, window_interval [, timezone]);

Аргументы

Возвращаемые значения

  • Исключительная верхняя граница соответствующего окна "hop". DateTime, Tuple или UInt32.
примечание

Поскольку одна запись может быть назначена нескольким окнам "hop", функция возвращает только границу первого окна, когда функция hop используется без WINDOW VIEW.

Пример

Запрос:

SELECT hopEnd(now(), INTERVAL '1' DAY, INTERVAL '2' DAY);

Результат:

┌─hopEnd(now(), toIntervalDay('1'), toIntervalDay('2'))─┐
│                                   2024-07-05 00:00:00 │
└───────────────────────────────────────────────────────┘