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

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

ClickHouse Supported

Любой запрос можно выполнить с помощью плагина ClickHouse. Конструктор запросов является удобным вариантом для простых запросов, но для сложных запросов вам понадобится использовать SQL Editor.

Все запросы в конструкторе запросов имеют тип запроса и требуют выбора хотя бы одной колонки.

Доступные типы запросов:

  • Table: самый простой тип запроса для отображения данных в табличном формате. Хорошо работает как универсальный вариант как для простых, так и для сложных запросов, содержащих агрегатные функции.
  • Logs: оптимизирован для построения запросов к логам. Лучше всего работает в режиме исследования с предустановленными настройками.
  • Time Series: лучше всего подходит для построения запросов временных рядов. Позволяет выбрать специальную временную колонку и добавлять агрегатные функции.
  • Traces: оптимизирован для поиска/просмотра трасс. Лучше всего работает в режиме исследования с предустановленными настройками.
  • SQL Editor: SQL редактор можно использовать, когда вам нужен полный контроль над запросом. В этом режиме можно выполнять любой SQL запрос.

Типы запросов

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

Table

Самый гибкий тип запроса — это табличный запрос. Это универсальный вариант для других конструкторов запросов, предназначенный для обработки простых и агрегатных запросов.

ПолеОписание
Builder ModeПростые запросы исключают агрегаты и Group By, в то время как агрегатные запросы включают эти опции.
ColumnsВыбранные колонки. В это поле можно ввести сырой SQL, чтобы позволить использовать функции и псевдонимы колонок.
AggregatesСписок агрегатных функций. Позволяет использовать пользовательские значения для функций и колонок. Видно только в режиме Aggregate.
Group ByСписок выражений GROUP BY. Видно только в режиме Aggregate.
Order ByСписок выражений ORDER BY.
LimitДобавляет оператор LIMIT в конец запроса. Если установлено значение 0, то он будет исключен. Некоторым визуализациям может потребоваться установка этого значения на 0, чтобы отобразить все данные.
FiltersСписок фильтров, которые будут применены в условии WHERE.

Этот тип запроса отобразит данные в виде таблицы.

Logs

Тип запроса к логам предлагает конструктор запросов, сосредоточенный на запросах к данным логов. Предустановленные настройки могут быть настроены в конфигурации логов источника данных, чтобы конструктор запросов мог быть заранее загружен с предустановленной базой данных/таблицей и колонками. OpenTelemetry также может быть включен для автоматического выбора колонок в соответствии с версией схемы.

Фильтры по Time и Level добавляются по умолчанию, вместе с Order By для колонки Time. Эти фильтры привязаны к соответствующим полям и обновляются по мере изменения колонок. Фильтр Level по умолчанию исключён из SQL, изменение его значения с опции IS ANYTHING активирует его.

Тип запроса к логам поддерживает data links.

ПолеОписание
Use OTelВключает колонки OpenTelemetry. Перезаписывает выбранные колонки на колонки, определенные версией схемы OTel (отключает выбор колонок).
ColumnsДополнительные колонки, которые будут добавлены к строкам логов. В это поле можно ввести сырой SQL, чтобы позволить использовать функции и псевдонимы колонок.
TimeОсновная колонка временной метки для лога. Отображает типы времени, но позволяет использовать произвольные значения/функции.
Log LevelНеобязательно. Уровень или серьезность лога. Значения обычно выглядят как INFO, error, Debug и т.д.
MessageСодержимое сообщения лога.
Order ByСписок выражений ORDER BY.
LimitДобавляет оператор LIMIT в конец запроса. Если установлено значение 0, то он будет исключен, но это не рекомендуется для больших наборов данных логов.
FiltersСписок фильтров, которые будут применены в условии WHERE.
Message FilterПоле для текстового ввода для удобной фильтрации логов с использованием LIKE %value%. Исключается, когда ввод пуст.

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

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

Time Series

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

Обе формы в основном одинаковы, с этими примечательными отличиями:

  • Специальное поле Time.
  • В режиме Aggregate автоматически применяются макроинтервалы времени вместе с Group By для поля Time.
  • В режиме Aggregate поле "Columns" скрыто.
  • Автоматически добавляется фильтр диапазона времени и Order By для поля Time.
Отсутствует ли у вас данные на визуализации?

В некоторых случаях панель временных рядов может казаться обрезанной, потому что лимит по умолчанию равен 1000.

Попробуйте удалить предложение LIMIT, установив его на 0 (если ваш набор данных это позволяет).

ПолеОписание
Builder ModeПростые запросы исключают агрегаты и Group By, в то время как агрегатные запросы включают эти опции.
TimeОсновная временная колонка для запроса. Отображает типы времени, но позволяет использовать произвольные значения/функции.
ColumnsВыбранные колонки. В это поле можно ввести сырой SQL, чтобы позволить использовать функции и псевдонимы колонок. Видно только в простом режиме.
AggregatesСписок агрегатных функций. Позволяет использовать пользовательские значения для функций и колонок. Видно только в режиме Aggregate.
Group ByСписок выражений GROUP BY. Видно только в режиме Aggregate.
Order ByСписок выражений ORDER BY.
LimitДобавляет оператор LIMIT в конец запроса. Если установлено значение 0, то он будет исключен, это рекомендуется для некоторых наборов данных временных рядов с целью получить полную визуализацию.
FiltersСписок фильтров, которые будут применены в условии WHERE.

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

Traces

Тип запроса трасс предлагает конструктор запросов для простого поиска и просмотра трасс. Он предназначен для данных OpenTelemetry, но колонки можно выбирать для отображения трасс из другой схемы. Предустановленные настройки могут быть настроены в конфигурации трасс источника данных, чтобы конструктор запросов мог быть заранее загружен с предустановленной базой данных/таблицей и колонками. Если предустановленные настройки настроены, выбор колонок по умолчанию будет свернут. OpenTelemetry также может быть включен, чтобы автоматически выбирать колонки в зависимости от версии схемы.

Предустановленные фильтры добавляются с целью показать только верхние уровни спанов. Также включен Order By для колонок Time и Duration Time. Эти фильтры привязаны к соответствующим полям и обновляются по мере изменения колонок. Фильтр Service Name по умолчанию исключен из SQL, изменение его значения с опции IS ANYTHING активирует его.

Тип запроса трасс поддерживает data links.

ПолеОписание
Trace ModeИзменяет запрос с Trace Search на поиск по Trace ID.
Use OTelВключает колонки OpenTelemetry. Перезаписывает выбранные колонки на колонки, определенные версией схемы OTel (отключает выбор колонок).
Trace ID ColumnID трассы.
Span ID ColumnID спана.
Parent Span ID ColumnID родительского спана. Обычно пусто для верхнего уровня трасс.
Service Name ColumnИмя службы.
Operation Name ColumnИмя операции.
Start Time ColumnОсновная временная колонка для спана трассы. Время, когда спан начался.
Duration Time ColumnПродолжительность спана. По умолчанию Grafana ожидает, что это будет дробное число в миллисекундах. Автоматически применяется преобразование через выпадающее меню Duration Unit.
Duration UnitЕдиница времени, используемая для продолжительности. Наносекунды по умолчанию. Выбранная единица будет преобразована в дробное число в миллисекундах, как того требует Grafana.
Tags ColumnТеги спана. Исключите это, если не используете схему на основе OTel, так как ожидается определенный тип Map.
Service Tags ColumnТеги службы. Исключите это, если не используете схему на основе OTel, так как ожидается определенный тип Map.
Order ByСписок выражений ORDER BY.
LimitДобавляет оператор LIMIT в конец запроса. Если установлено значение 0, то он будет исключен, но это не рекомендуется для больших наборов данных трасс.
FiltersСписок фильтров, которые будут применены в условии WHERE.
Trace IDID трассы для фильтрации. Используется только в режиме Trace ID и при открытии data link для трассы.

Этот тип запроса отобразит данные в представлении таблицы для режима Trace Search и в панели трасс для режима Trace ID.

SQL Editor

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

SQL редактор можно открыть, выбрав "SQL Editor" в верхней части редактора запросов.

Макро функции всё ещё могут использоваться в этом режиме.

Вы можете переключаться между типами запросов, чтобы получить визуализацию, которая лучше всего соответствует вашему запросу. Это переключение также влияет даже в режиме панели инструментов, особенно с данными временных рядов.

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

Пример ссылок трасс в таблице

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

Вы можете создать ссылку данных, выбрав колонку с именем traceID в своем запросе. Это имя нечувствительно к регистру и поддерживает добавление подчеркивания перед "ID". Например: traceId, TraceId, TRACE_ID и tracE_iD будут действительными.

Если OpenTelemetry включен в запросе логов или трасс, колонка с ID трассы будет добавлена автоматически.

Включив колонку с ID трассы, ссылки "View Trace" и "View Logs" будут прикреплены к данным.

Возможности связывания

С имеющимися ссылками данных вы можете открыть трассы и логи, используя предоставленный ID трассы.

"View Trace" откроет разделённую панель с трассой, а "View Logs" откроет запрос логов, отфильтрованный по 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