Перейти к основному содержимому
Перейти к основному содержимому

Конструктор запросов

Любой запрос может быть выполнен с использованием плагина 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%. Исключается, если ввод пуст.
Пример запросов OTel логов

Этот тип запроса отобразит данные в панели логов вместе с панелью гистограммы логов вверху.

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

Пример дополнительных полей в запросах логов

Временной ряд

Тип запроса по временным рядам аналогичен табличному, но с акцентом на данные временных рядов.

Два представления в основном одинаковы с заметными отличиями:

  • Специальное поле Время.
  • В агрегатном режиме автоматически применяется макрос временного интервала вместе с 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 трассировки, и при открытии ссылки на данные трассировки.
Пример OTel запросов трассировок

Этот тип запроса отобразит данные с табличным отображением в режиме поиска трассировок и панелью трассировки в режиме поиска по ID трассировки.

SQL Редактор

Для запросов, которые слишком сложны для конструктора запросов, вы можете использовать SQL Редактор.
Это дает вам полный контроль над запросом, позволяя вам писать и выполнять обычный SQL ClickHouse.

SQL редактор можно открыть, выбрав "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