Конструктор запросов
Любой запрос может быть выполнен с использованием плагина 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 |