Перейти к основному содержанию
ClickStack поддерживает визуализации на основе SQL-запросов в исходном виде. Это дает полный контроль над логикой запроса, сохраняя интеграцию с временными диапазонами на уровне панели мониторинга, фильтрами и отрисовкой диаграмм. Визуализации на основе SQL полезны, когда нужно выйти за рамки встроенного Chart Explorer — например, чтобы объединять таблицы с помощью JOIN или строить сложные агрегации, которые не поддерживаются chart builder.

Создание визуализации на основе SQL

Чтобы создать визуализацию на основе SQL, откройте редактор плитки панели мониторинга и выберите вкладку SQL. Далее:
  1. Выберите подключение к ClickHouse, для которого будет выполняться запрос.
  2. При необходимости выберите Source — это позволит применять к вашей визуализации фильтры уровня панели мониторинга через макрос $__filters.
  3. Напишите SQL-запрос в редакторе, используя параметры запроса и макросы для интеграции с временным диапазоном и фильтрами панели мониторинга.
  4. Нажмите кнопку play, чтобы просмотреть результат, затем нажмите Save.

Параметры запроса

Параметры запроса позволяют использовать в SQL текущий временной диапазон и уровень детализации панели мониторинга. Для этого применяется синтаксис параметризованных запросов ClickHouse: {paramName:Type}.

Доступные параметры

Доступные параметры зависят от типа диаграммы: Диаграммы Line и столбчатые диаграммы с накоплением:
ПараметрТипОписание
{startDateMilliseconds:Int64}Int64Начало диапазона дат панели мониторинга (миллисекунды с начала эпохи Unix)
{endDateMilliseconds:Int64}Int64Конец диапазона дат панели мониторинга (миллисекунды с начала эпохи Unix)
{intervalSeconds:Int64}Int64Размер временного интервала в секундах (в зависимости от гранулярности)
{intervalMilliseconds:Int64}Int64Размер временного интервала в миллисекундах (в зависимости от гранулярности)
Диаграммы Table, Pie и Number:
ПараметрТипОписание
{startDateMilliseconds:Int64}Int64Начало диапазона дат панели мониторинга (миллисекунды с начала эпохи Unix)
{endDateMilliseconds:Int64}Int64Конец диапазона дат панели мониторинга (миллисекунды с начала эпохи Unix)

Макросы

Макросы — это сокращённые конструкции, которые разворачиваются в типовые выражения ClickHouse SQL. Они начинаются с префикса $__ и заменяются до отправки запроса в ClickHouse.

Макросы временных границ

Эти макросы возвращают выражение ClickHouse, соответствующее времени начала или окончания панели мониторинга. Они не принимают аргументов.
МакросРаскрывается вТип столбца
$__fromTimetoDateTime(fromUnixTimestamp64Milli({startDateMilliseconds:Int64}))DateTime
$__toTimetoDateTime(fromUnixTimestamp64Milli({endDateMilliseconds:Int64}))DateTime
$__fromTime_msfromUnixTimestamp64Milli({startDateMilliseconds:Int64})DateTime64
$__toTime_msfromUnixTimestamp64Milli({endDateMilliseconds:Int64})DateTime64
$__interval_s{intervalSeconds:Int64}Int64

Макросы фильтрации по времени

Эти макросы создают фрагмент условия WHERE, который фильтрует столбец по временному диапазону панели мониторинга.
МакросОписание
$__timeFilter(column)Фильтрует столбец DateTime по временному диапазону панели мониторинга
$__timeFilter_ms(column)Фильтрует столбец DateTime64 (миллисекунды) по временному диапазону панели мониторинга
$__dateFilter(column)Фильтрует столбец Date по временному диапазону панели мониторинга
$__dateTimeFilter(dateCol, timeCol)Фильтрует с использованием отдельных столбцов Date и DateTime
$__dt(dateCol, timeCol)Псевдоним для $__dateTimeFilter
Пример развёртывания $__timeFilter(TimestampTime):

Макросы временных интервалов

Эти макросы группируют столбец с временной меткой по интервалам, соответствующим детализации панели мониторинга. Обычно они используются в секциях SELECT и GROUP BY для графиков временных рядов. Они доступны только для визуализаций Line и столбчатых диаграмм с накоплением.
MacroDescription
$__timeInterval(column)Группирует столбец DateTime по интервалам intervalSeconds
$__timeInterval_ms(column)Группирует столбец DateTime64 по интервалам intervalMilliseconds
Пример развёртывания $__timeInterval(TimestampTime):

Макрос фильтра панели мониторинга

MacroОписание
$__filtersПодставляет условия фильтрации на уровне панели мониторинга (требуется выбрать Source)
Когда на графике выбран Source и включены фильтры панели мониторинга, $__filters разворачивается в соответствующие условия SQL WHERE. Если источник не выбран или фильтры не заданы, он разворачивается в (1=1), поэтому его всегда можно безопасно включать в условие WHERE.

Как результаты запроса отображаются на диаграмме

ClickStack автоматически сопоставляет столбцы результатов с элементами диаграммы в зависимости от типов столбцов. Правила сопоставления зависят от типа диаграммы.

Линейные диаграммы и столбчатые диаграммы с накоплением

РольТип столбцаОписание
Временная меткаПервый столбец Date или DateTimeИспользуется как ось X.
Значение серииВсе числовые столбцыКаждый числовой столбец отображается как отдельная серия. Обычно это агрегированные значения.
Названия группСтолбцы String, Map или ArrayНеобязательно. Строки с разными значениями групп отображаются как отдельные серии.

Круговая диаграмма

РольТип столбцаОписание
Значение сектораПервый числовой столбецОпределяет размер каждого сектора.
Метка сектораСтолбцы типа String, Map или ArrayНеобязательно. Каждое уникальное значение становится меткой сектора.

Числовая диаграмма

РольТип столбцаОписание
ЧислоПервый числовой столбецОтображается значение из первой строки первого числового столбца.

Табличная диаграмма

Все столбцы результатов отображаются непосредственно в виде столбцов таблицы.

Примеры

Требуется доступ к системной таблицеЕсли вы запускаете следующие примеры на play-clickstack.clickhouse.com, необходимо указать otel_v2.otel_logs или otel_v2.otel_traces.

Линейная диаграмма — количество логов по сервисам во времени

Этот запрос подсчитывает количество событий логов для каждого сервиса, группируя их по временным интервалам в соответствии с детализацией панели мониторинга.
  • ts (DateTime) используется как временная метка на оси X.
  • count (числовое значение) отображается как значение серии.
  • ServiceName (строка) создает отдельную линию для каждого сервиса.

Линейная диаграмма — с использованием макросов

Тот же запрос с использованием макросов для краткости:

Столбчатая диаграмма с накоплением — количество ошибок по уровням серьёзности

Табличная диаграмма — 10 конечных точек с наибольшей задержкой

Круговая диаграмма — распределение запросов по сервисам

  • request_count (числовое значение) определяет размер каждого сегмента.
  • ServiceName (строка) задает метку каждого сегмента.

Числовая диаграмма — общее число ошибок

Отображается числовое значение total_errors из первой строки.

Примечания

  • Визуализации на основе SQL выполняются во включенном режиме readonly — разрешены только запросы SELECT.
  • Визуализации на основе SQL должны содержать ровно один SQL-запрос — несколько запросов не поддерживаются.
  • Редактор SQL предлагает автодополнение как для параметров запроса, так и для макросов.
  • Чтобы фильтры панели мониторинга применялись к визуализациям на основе SQL, необходимо выбрать Source. Для корректной фильтрации Source должен соответствовать таблице, к которой обращается запрос.
Последнее изменение 25 июня 2026 г.