Конструктор запросов
Любой запрос может быть выполнен с использованием плагина ClickHouse.
Конструктор запросов — это удобный вариант для более простых запросов, но для сложных запросов вам нужно будет использовать SQL Редактор.
Все запросы в конструкторе запросов имеют тип запроса и требуют, чтобы хотя бы одна колонка была выбрана.
Доступные типы запросов:
- Таблица: самый простой тип запроса для отображения данных в табличном формате. Хорошо работает как универсальный вариант как для простых, так и для сложных запросов, содержащих агрегатные функции.
- Логи: оптимизирован для построения запросов к данным логов. Лучше всего работает в режиме исследования с предустановленными параметрами.
- Временной ряд: лучше всего подходит для построения запросов по временным рядам. Позволяет выбрать специализированную временную колонку и добавить агрегатные функции.
- Трассировки: оптимизирован для поиска/просмотра трассировок. Лучше всего работает в режиме исследования с предустановленными параметрами.
- SQL Редактор: SQL Редактор можно использовать, когда вам нужен полный контроль над запросом. В этом режиме может выполняться любой SQL-запрос.
Типы запросов
Установка Тип Запроса изменит макет конструктора запросов в соответствии с типом создаваемого запроса.
Тип запроса также определяет, какая панель используется при визуализации данных.
Таблица
Самый гибкий тип запроса — это запрос к таблице. Это универсальный вариант для других конструкторов запросов, предназначенный для обработки простых и агрегатных запросов.
Поле | Описание |
---|---|
Режим конструктора | Простые запросы исключают агрегаты и Group By, в то время как агрегатные запросы включают эти параметры. |
Колонки | Выбранные колонки. В это поле можно ввести необработанный SQL, чтобы позволить использовать функции и алиасирование колонок. |
Агрегаты | Список агрегатных функций. Позволяет указать пользовательские значения для функции и колонки. Видим только в агрегатном режиме. |
Group By | Список выражений GROUP BY. Видим только в агрегатном режиме. |
Order By | Список выражений ORDER BY. |
Limit | Добавляет оператор LIMIT в конец запроса. Если установлено 0 , то оно будет исключено. Некоторые визуализации могут потребовать установить это значение на 0 , чтобы показать все данные. |
Фильтры | Список фильтров, которые будут применены в предложении WHERE . |

Этот тип запроса отобразит данные в виде таблицы.
Логи
Тип запроса логи предлагает конструктор запросов, который ориентирован на запросы данных логов.
Предустановки могут быть настроены в конфигурации логов источника данных, чтобы конструктор запросов был предварительно заполнен по умолчанию базой данных/таблицей и колонками.
OpenTelemetry также может быть включен для автоматического выбора колонок в соответствии с версией схемы.
По умолчанию добавляются фильтры Время и Уровень, а также Order By для колонки Время.
Эти фильтры связаны с соответствующими полями и будут обновляться по мере изменения колонок.
Фильтр Уровень по умолчанию исключается из SQL, изменение его с опции IS ANYTHING
включит его.
Тип запроса логи поддерживает ссылки на данные.
Поле | Описание |
---|---|
Использовать OTel | Включает колонки OpenTelemetry. Перезапишет выбранные колонки, чтобы использовать колонки, определенные выбранной версией схемы OTel (отключает выбор колонок). |
Колонки | Дополнительные колонки, которые будут добавлены к строкам логов. В это поле можно ввести необработанный SQL, чтобы позволить использовать функции и алиасирование колонок. |
Время | Основная временная метка для лога. Будет отображать типы, похожие на время, но позволяет использовать пользовательские значения/функции. |
Уровень лога | Необязательно. уровень или серьезность лога. Значения обычно выглядят как INFO , error , Debug и т.д. |
Сообщение | Содержимое сообщения лога. |
Order By | Список выражений ORDER BY. |
Limit | Добавляет оператор LIMIT в конец запроса. Если установлено 0 , то оно будет исключено, но это не рекомендуется для больших наборов данных логов. |
Фильтры | Список фильтров, которые будут применены в предложении WHERE . |
Фильтр сообщений | Текстовое поле для удобной фильтрации логов с использованием оператора LIKE %value% . Исключается, если ввод пуст. |

Этот тип запроса отобразит данные в панели логов вместе с панелью гистограммы логов вверху.
Дополнительные колонки, выбранные в запросе, можно просмотреть в развернутой строке лога:

Временной ряд
Тип запроса по временным рядам аналогичен табличному, но с акцентом на данные временных рядов.
Два представления в основном одинаковы с заметными отличиями:
- Специальное поле Время.
- В агрегатном режиме автоматически применяется макрос временного интервала вместе с Group By для поля Время.
- В агрегатном режиме поле "Колонки" скрыто.
- Автоматически добавляется фильтр диапазона времени и Order By для поля Время.
В некоторых случаях панель временных рядов может казаться обрезанной, потому что по умолчанию лимит установлен на 1000
.
Попробуйте удалить условие LIMIT
, установив его на 0
(если ваш набор данных это позволяет).
Поле | Описание |
---|---|
Режим конструктора | Простые запросы исключают агрегаты и Group By, в то время как агрегатные запросы включают эти параметры. |
Время | Основная временная колонка для запроса. Будет отображать типы, похожие на время, но позволяет использовать пользовательские значения/функции. |
Колонки | Выбранные колонки. В это поле можно ввести необработанный SQL, чтобы позволить использовать функции и алиасирование колонок. Видим только в простом режиме. |
Агрегаты | Список агрегатных функций. Позволяет указать пользовательские значения для функции и колонки. Видим только в агрегатном режиме. |
Group By | Список выражений GROUP BY. Видим только в агрегатном режиме. |
Order By | Список выражений ORDER BY. |
Limit | Добавляет оператор LIMIT в конец запроса. Если установлено 0 , то оно будет исключено. Рекомендуется для некоторых наборов данных временных рядов, чтобы отобразить полную визуализацию. |
Фильтры | Список фильтров, которые будут применены в предложении WHERE . |

Этот тип запроса отобразит данные с панелью временных рядов.
Трассировки
Тип запроса трассировок предлагает строитель запросов для легкого поиска и просмотра трассировок.
Он предназначен для данных OpenTelemetry, но можно выбирать колонки для отображения трассировок из другой схемы.
Предустановки могут быть настроены в конфигурации трассировок источника данных, чтобы конструктор запросов был предварительно заполнен по умолчанию базой данных/таблицей и колонками. Если предустановки настроены, выбор колонок будет сжат по умолчанию.
OpenTelemetry также может быть включен для автоматического выбора колонок в соответствии с версией схемы.
По умолчанию добавляются фильтры с намерением показывать только верхние уровни спанов.
Также включен Order By для колонок Время и Время длительности.
Эти фильтры связаны с соответствующими полями и будут обновляться по мере изменения колонок.
Фильтр Имя службы по умолчанию исключается из SQL, изменение его с опции IS ANYTHING
включит его.
Тип запроса трассировок поддерживает ссылки на данные.
Поле | Описание |
---|---|
Режим трассировки | Изменяет запрос с поиска трассировок на поиск по ID трассировки. |
Использовать OTel | Включает колонки OpenTelemetry. Перезапишет выбранные колонки, чтобы использовать колонки, определенные выбранной версией схемы OTel (отключает выбор колонок). |
ID трассировки | ID трассировки. |
ID спана | ID спана. |
ID родительского спана | ID родительского спана. Обычно для верхних уровней трассировок он пуст. |
Имя службы | Имя службы. |
Имя операции | Имя операции. |
Временная колонка начала | Основная временная колонка для спана трассировки. Время, когда спан начался. |
Временная колонка длительности | Продолжительность спана. По умолчанию Grafana ожидает, что это будет число с плавающей запятой в миллисекундах. Автоматически применяется преобразование через выпадающий список Единица времени . |
Единица времени | Единица времени, используемая для продолжительности. По умолчанию наносекунды. Выбранная единица будет преобразована в число с плавающей запятой в миллисекундах по мере необходимости для Grafana. |
Теги спана | Теги спана. Исключите это, если не используете схему на основе OTel, так как она ожидает определенный тип колонки Map. |
Теги службы | Теги службы. Исключите это, если не используете схему на основе OTel, так как она ожидает определенный тип колонки Map. |
Order By | Список выражений ORDER BY. |
Limit | Добавляет оператор LIMIT в конец запроса. Если установлено 0 , то оно будет исключено, но это не рекомендуется для больших наборов данных трассировок. |
Фильтры | Список фильтров, которые будут применены в предложении WHERE . |
ID трассировки | ID трассировки для фильтрации. Используется только в режиме ID трассировки, и при открытии ссылки на данные трассировки. |

Этот тип запроса отобразит данные с табличным отображением в режиме поиска трассировок и панелью трассировки в режиме поиска по ID трассировки.
SQL Редактор
Для запросов, которые слишком сложны для конструктора запросов, вы можете использовать SQL Редактор.
Это дает вам полный контроль над запросом, позволяя вам писать и выполнять обычный SQL ClickHouse.
SQL редактор можно открыть, выбрав "SQL Редактор" в верхней части редактора запросов.
Макро функции также можно использовать в этом режиме.
Вы можете переключаться между типами запросов, чтобы получить визуализацию, которая лучше всего соответствует вашему запросу.
Этот переключатель также оказывает влияние даже в представлении панели инструментов, особенно при работе с данными временных рядов.

Ссылки на данные
Grafana ссылки на данные могут использоваться для создания связей с новыми запросами.
Эта функция была включена в плагине ClickHouse для связывания трассировки с логами и наоборот. Она лучше всего работает с настроенным OpenTelemetry как для логов, так и для трассировок в конфигурации источника данных
Пример ссылок на трассировки в таблице

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

Как создать ссылку на данные
Вы можете создать ссылку на данные, выбрав колонку с именем traceID
в вашем запросе. Это имя нечувствительно к регистру и поддерживает добавление нижнего подчеркивания перед "ID". Например, traceId
, TraceId
, TRACE_ID
и tracE_iD
будут все допустимы.
Если OpenTelemetry включен в запросе логов или трассировок, колонка ID трассировки будет включена автоматически.
Включив колонку ID трассировки, ссылки "Посмотреть трассировку" и "Посмотреть логи" будут прикреплены к данным.
Возможности связывания
С имеющимися ссылками на данные вы можете открывать трассировки и логи, используя предоставленный ID трассировки.
"Посмотреть трассировку" откроет разделенную панель с трассировкой, а "Посмотреть логи" откроет запрос логов, отфильтрованный по ID трассировки.
Если ссылка была нажата из панели инструментов вместо режима исследования, ссылка откроется в новой вкладке в режиме исследования.
Настройка предустановок для логов и трассировок обязательна при переходе между типами запросов (логи к трассировкам и трассировки к логам). Предустановки не требуются при открытии ссылки одного и того же типа запроса, поскольку запрос можно просто скопировать.
Пример просмотра трассировки (правый панель) из запроса логов (левый панель)

Макросы
Макросы — это простой способ добавить динамический SQL в ваш запрос.
Перед отправкой запроса на сервер ClickHouse плагин развернет макрос и заменит его полным выражением.
Запросы как из SQL Редактора, так и из конструктора запросов могут использовать макросы.
Использование макросов
Макросы могут быть включены в любом месте в запросе, несколько раз, если необходимо.
Вот пример использования макроса $__timeFilter
:
Ввод:
Финальный вывод запроса:
В этом примере диапазон времени панели управления Grafana применяется к колонке log_time
.
Плагин также поддерживает нотацию с использованием фигурных скобок {}
. Используйте эту нотацию, когда запросы нужны внутри параметров.
Список макросов
Это список всех макросов, доступных в плагине:
Макрос | Описание | Пример вывода |
---|---|---|
$__dateFilter(columnName) | Заменяется фильтром диапазона времени по предоставленной колонке, используя диапазон времени панели Grafana как Date. | columnName >= toDate('2022-10-21') AND columnName <= toDate('2022-10-23') |
$__timeFilter(columnName) | Заменяется фильтром диапазона времени по предоставленной колонке, используя диапазон времени панели Grafana как DateTime. | columnName >= toDateTime(1415792726) AND log_time <= toDateTime(1447328726) |
$__timeFilter_ms(columnName) | Заменяется фильтром диапазона времени по предоставленной колонке, используя диапазон времени панели Grafana как DateTime64. | columnName >= fromUnixTimestamp64Milli(1415792726123) AND columnName <= fromUnixTimestamp64Milli(1447328726456) |
$__dateTimeFilter(dateColumn, timeColumn) | Упрощенная форма, которая объединяет $__dateFilter() и $__timeFilter() с использованием отдельных колонок Date и DateTime. Псевдоним $__dt() | $__dateFilter(dateColumn) AND $__timeFilter(timeColumn) |
$__fromTime | Заменяется на начальное время диапазона панели Grafana, приведенное к DateTime. | toDateTime(1415792726) |
$__fromTime_ms | Заменяется на начальное время диапазона панели, приведенное к DateTime64. | fromUnixTimestamp64Milli(1415792726123) |
$__toTime | Заменяется на конечное время диапазона панели Grafana, приведенное к DateTime. | toDateTime(1447328726) |
$__toTime_ms | Заменяется на конечное время диапазона панели, приведенное к DateTime64. | fromUnixTimestamp64Milli(1447328726456) |
$__timeInterval(columnName) | Заменяется на функцию, вычисляющую интервал на основе размера окна в секундах. | toStartOfInterval(toDateTime(columnName), INTERVAL 20 second) |
$__timeInterval_ms(columnName) | Заменяется на функцию, вычисляющую интервал на основе размера окна в миллисекундах. | toStartOfInterval(toDateTime64(columnName, 3), INTERVAL 20 millisecond) |
$__interval_s | Заменяется на интервал панели в секундах. | 20 |
$__conditionalAll(condition, $templateVar) | Заменяется на первый параметр, когда переменная шаблона во втором параметре не выбирает каждое значение. Заменяется на 1=1 , когда переменная шаблона выбирает каждое значение. | condition или 1=1 |