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

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

ClickHouse Supported

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