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

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

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

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

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

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

Ссылки на данные
Ссылки на данные Grafana data links можно использовать для связи с новыми запросами. Эта функция была активирована в плагине 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 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 |