Функции анализа временных рядов
Анализ временных рядов в ClickHouse можно выполнять с использованием стандартных SQL-агрегатных и оконных функций. Работая с данными временных рядов, вы обычно встретите три основных типа метрик:
- Метрики счетчиков, которые монотонно увеличиваются с течением времени (например, просмотры страниц или общее количество событий)
- Метрики-измерения, которые представляют собой замеры в определенный момент времени и могут как увеличиваться, так и уменьшаться (например, загрузка CPU или температура)
- Гистограммы, которые берут выборки наблюдений и подсчитывают их в ведрах (например, продолжительность запросов или размеры ответов)
Общие шаблоны анализа этих метрик включают сравнение значений между периодами, расчет накопительных сумм, определение темпов изменения и анализ распределений.
Все это можно достичь с помощью комбинаций агрегатов, оконных функций, таких как sum() OVER
, и специализированных функций, таких как histogram()
.
Изменения между периодами
При анализе данных временных рядов нам часто необходимо понимать, как значения изменяются между временными периодами.
Это особенно важно для метрик измерений и счетчиков.
Оконная функция lagInFrame
позволяет нам получить значение предыдущего периода для расчета этих изменений.
Следующий запрос демонстрирует это, вычисляя изменения просмотров на день для страницы "Weird Al" Yankovic в Википедии. Столбец с трендом показывает, увеличился ли трафик (положительные значения) или уменьшился (отрицательные значения) по сравнению с предыдущим днем, помогая выявить необычные всплески или падения активности.
Накопленные значения
Метрики счетчиков естественно накапливаются со временем. Чтобы проанализировать этот накопленный рост, мы можем рассчитать текущие суммы с использованием оконных функций.
Следующий запрос демонстрирует это, используя sum() OVER
, который создает текущую сумму, в то время как функция bar()
предоставляет визуальное представление роста.
Расчеты темпов
При анализе данных временных рядов часто полезно понимать темп событий на единицу времени. Этот запрос вычисляет темп просмотров страниц в секунду, деля часовыеTotals на количество секунд в часе (3600). Визуальная шкала помогает определить часы пиковой активности.
Гистограммы
Популярное использование данных временных рядов - создание гистограмм на основе отслеживаемых событий.
Предположим, мы хотим понять распределение числа страниц на основе их общего количества просмотров, включая только страницы, которые имеют более 10,000 просмотров.
Мы можем использовать функцию histogram()
, чтобы автоматически сгенерировать адаптивную гистограмму на основе количества ведер:
Затем мы можем использовать arrayJoin()
для обработки данных и bar()
для их визуализации: