Skip to main content
Анализ временных рядов в ClickHouse можно выполнять с помощью стандартных SQL-функций агрегации и оконных функций. При работе с данными временных рядов вы обычно сталкиваетесь с тремя основными типами метрик:
  • метрики типа Counter, которые монотонно увеличиваются со временем (например, просмотры страниц или общее число событий)
  • метрики типа Gauge, которые отражают измерения в конкретный момент времени и могут как увеличиваться, так и уменьшаться (например, загрузка CPU или температура)
  • гистограммы, которые группируют наблюдения по интервалам и подсчитывают их количество (например, длительность запросов или размер ответов)
Распространённые подходы к анализу таких метрик включают сравнение значений между периодами, вычисление накопительных итогов, определение скорости изменений и анализ распределений. Всего этого можно добиться с помощью комбинации агрегаций, оконных функций, таких как sum() OVER, и специализированных функций, таких как histogram().

Изменения от периода к периоду

При анализе временных рядов нам часто нужно понимать, как значения меняются от одного периода к другому. Это важно как для метрик типа Gauge, так и для Counter. Оконная функция lagInFrame позволяет получить значение предыдущего периода, чтобы вычислить эти изменения. Следующий запрос показывает это на примере расчёта изменений числа просмотров страницы Википедии “Weird Al” Yankovic день ко дню. Столбец trend показывает, вырос ли трафик (положительные значения) или снизился (отрицательные значения) по сравнению с предыдущим днём, помогая выявлять необычные всплески или спады активности.

Накопительные значения

Метрики типа Counter естественным образом накапливаются со временем. Чтобы проанализировать этот накопительный рост, можно вычислить нарастающий итог с помощью оконных функций. Следующий запрос демонстрирует это с помощью конструкции sum() OVER, которая создает нарастающий итог. Функция bar() наглядно показывает рост.

Расчёт частоты

При анализе данных временных рядов часто бывает полезно понимать частоту событий в единицу времени. Этот запрос вычисляет частоту просмотров страниц в секунду, деля почасовые итоги на количество секунд в часе (3600). Столбчатая диаграмма помогает выявить часы пиковой активности.

Гистограммы

Популярный сценарий использования временных рядов — построение гистограмм на основе отслеживаемых событий. Предположим, мы хотим понять распределение страниц по общему числу просмотров, включая только страницы, у которых более 10 000 просмотров. Мы можем использовать функцию histogram(), чтобы автоматически построить адаптивную гистограмму на основе количества интервалов:
Затем мы можем использовать arrayJoin(), чтобы подготовить данные, а bar() — чтобы визуализировать их:
Последнее изменение 3 июля 2026 г.