Последнее обновление: августа 10, 2026

Редактор запросов MySQL

Редакторы запросов Grafana уникальны для каждого источника данных. Общую информацию о редакторах запросов Grafana см. в разделе Query editors. Общую информацию о запросах к источникам данных в Grafana см. в разделе Query and transform data.

Редактор запросов MySQL расположен на странице Explore. Также вы можете открыть редактор запросов MySQL из панели дашборда. Нажмите многоточие в правом верхнем углу панели и выберите Edit.

Note

Если база данных по умолчанию настроена на Data Source Configuration page или через файл конфигурации провижининга, пользователи могут запрашивать только эту предварительно настроенную базу данных.

Компоненты редактора запросов MySQL

Редактор запросов MySQL имеет два режима: Builder и Code.

Режим Builder помогает строить запрос с помощью визуального интерфейса. Режим Code позволяет выполнять расширенные запросы и поддерживает написание сложных SQL-запросов.

Note

Если имя вашей таблицы или базы данных содержит зарезервированное слово или запрещённый символ, редактор заключает имя в кавычки. Например, имя table-name заключается в обратные кавычки - `table-name`.

Режим Builder MySQL

Следующие компоненты помогают построить запрос MySQL:

  • Format — выберите формат ответа из раскрывающегося списка для запроса MySQL. По умолчанию — Table. Если вы используете вариант формата Time series, один из столбцов должен быть time.

  • Dataset — выберите базу данных для запроса из раскрывающегося списка.

    • Table — выберите таблицу из раскрывающегося списка. Таблицы соответствуют выбранной базе данных.

    • Data operations — необязательно выберите агрегацию из раскрывающегося списка. Вы можете добавить несколько операций с данными, нажав + sign. Нажмите X, чтобы удалить операцию с данными. Нажмите garbage can icon, чтобы удалить весь столбец.

    • Column — выберите столбец, по которому нужно выполнить агрегацию.

    • Alias — необязательно добавьте псевдоним из раскрывающегося списка. Вы также можете добавить свой собственный псевдоним, введя его в поле и нажав Enter. Удалите псевдоним, нажав X.

  • Filter — переключатель для добавления фильтров.

    • Filter by column value — необязательно если вы включите Filter, вы сможете добавить столбец для фильтрации из раскрывающегося списка. Чтобы фильтровать по большему числу столбцов, нажмите + sign справа от раскрывающегося списка условий. Вы можете выбрать различные операторы из раскрывающегося списка рядом с условием. Когда добавлено несколько фильтров, вы можете добавить оператор AND, чтобы отображались все истинные условия, или оператор OR, чтобы отображались любые истинные условия. Используйте второй раскрывающийся список, чтобы выбрать фильтр. Чтобы удалить фильтр, нажмите кнопку X рядом с раскрывающимся списком этого фильтра. После выбора столбца типа «дата» вы можете выбрать Macros в списке операторов и выбрать timeFilter, что добавит макрос $\_\_timeFilter в запрос с выбранным столбцом даты.
  • Group — переключатель для добавления Group by column.

    • Group by column — выберите столбец для фильтрации из раскрывающегося списка. Нажмите + sign, чтобы фильтровать по нескольким столбцам. Нажмите X, чтобы удалить фильтр.
  • Order — переключатель для добавления инструкции ORDER BY.

    • Order by — выберите столбец для сортировки из раскрывающегося списка. Выберите порядок по возрастанию (ASC) или по убыванию (DESC).
    • Limit — вы можете добавить необязательное ограничение на количество возвращаемых результатов. По умолчанию — 50.
  • Preview — переключатель для предварительного просмотра SQL-запроса, сгенерированного конструктором запросов. Предварительный просмотр включён по умолчанию.

Режим Code MySQL

Чтобы создавать расширенные запросы, переключитесь в Code mode, нажав Code в правом верхнем углу окна редактора. Режим Code поддерживает автодополнение таблиц, столбцов, ключевых слов SQL, стандартных функций SQL, переменных шаблонов Grafana и макросов Grafana. Столбцы не могут быть дополнены до указания таблицы.

Выберите Table или Time Series в качестве формата. Нажмите {} в правом нижнем углу, чтобы отформатировать запрос. Нажмите downward caret, чтобы развернуть редактор режима Code. CTRL/CMD + Return служит сочетанием клавиш для выполнения запроса.

Warning

Изменения, внесённые в запрос в режиме Code, не переносятся в режим Builder и отбрасываются. Grafana предлагает скопировать ваш код в буфер обмена, чтобы сохранить любые изменения.

Макросы

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

Пример макроса Описание
$__time(dateColumn) Заменяет значение выражением для преобразования в метку времени UNIX и переименовывает столбец в time_sec. Также помогает распознать столбец time, как требуется в формате Time Series. Пример: UNIX_TIMESTAMP(dateColumn) AS time_sec.
$__timeEpoch(dateColumn) Заменяет значение выражением для преобразования в метку времени UNIX Epoch и переименовывает столбец в time_sec. Пример: UNIX_TIMESTAMP(dateColumn) AS time_sec.
$__timeFilter(dateColumn) Применяет фильтр диапазона времени, используя указанное имя столбца, и извлекает только данные, попадающие в этот диапазон. Пример: dateColumn BETWEEN FROM_UNIXTIME(1494410783) AND FROM_UNIXTIME(1494410983)
$__timeFrom() Заменяет значение началом текущего активного выбора времени. Пример: FROM_UNIXTIME(1494410783)
$__timeTo() Заменяет значение окончанием текущего активного выбора времени. Пример: FROM_UNIXTIME(1494410983)
$__timeGroup(dateColumn,'5m') Заменяет значение выражением, подходящим для использования в предложении GROUP BY, и создаёт метки времени интервалов с фиксированным шагом. Пример: *cast(cast(UNIX_TIMESTAMP(dateColumn)/(300) as signed)*300 as signed),*
$__timeGroup(dateColumn,'5m', 0) То же, что и макрос $__timeGroup(dateColumn,'5m'), но включает параметр заполнения, чтобы гарантировать, что отсутствующие точки в ряду будут добавлены Grafana с использованием 0 в качестве значения по умолчанию. Это применяется только к запросам временных рядов.
$__timeGroup(dateColumn,'5m', NULL) То же, что и $__timeGroup(dateColumn,'5m', 0), но в качестве значения для отсутствующих точек используется NULL. Это применяется только к запросам временных рядов.
$__timeGroup(dateColumn,'5m', previous) То же, что и макрос $__timeGroup(dateColumn,'5m', previous), но в качестве значения заполнения используется предыдущее значение в ряду. Если предыдущего значения нет, будет использован NULL. Это применяется только к запросам временных рядов.
$__timeGroupAlias(dateColumn,'5m') Заменяет значение идентично $__timeGroup, но с добавленным псевдонимом столбца.
$__unixEpochFilter(dateColumn) Заменяет значение фильтром диапазона времени, используя указанное имя столбца, со временем, представленным в виде метки времени UNIX. Пример: dateColumn > 1494410783 AND dateColumn < 1494497183
$__unixEpochNanoFilter(dateColumn) Заменяет значение фильтром диапазона времени, используя указанное имя столбца, со временем, представленным в виде метки времени в наносекундах. Пример: dateColumn > 1494410783152415214 AND dateColumn < 1494497183142514872
$__unixEpochNanoFrom() Заменяет значение началом текущего активного выбора времени в виде метки времени в наносекундах. Пример: 1494410783152415214
$__unixEpochNanoTo() Заменяет значение окончанием текущего активного выбора времени в виде метки времени в наносекундах. Пример: 1494497183142514872
$__unixEpochGroup(dateColumn,'5m', [fillmode]) То же, что и $__timeGroup, но для времени, хранящегося в виде метки времени Unix. Обратите внимание, что fillMode работает только с запросами временных рядов.
$__unixEpochGroupAlias(dateColumn,'5m', [fillmode]) То же, что и $__timeGroup, но также добавляет псевдоним столбца. Обратите внимание, что fillMode работает только с запросами временных рядов.

Note

Начиная с Grafana 13.0, повторная дискретизация с заполнением в $__timeGroup и $__unixEpochGroup включает дополнительные меры защиты, предотвращающие появление некорректных точек данных, когда запрос не возвращает строк или диапазон времени выходит за границы данных.

Табличные SQL-запросы

Если для параметра Format установлено значение Table, вы можете выполнять практически любой тип SQL-запроса. Панель Table автоматически отображает полученные столбцы и строки из вашего запроса.

Вы можете изменить или настроить имя столбца панели Table, используя синтаксис ключевого слова SQL AS.

SQL
SELECT
  title as 'Title',
  user.login as 'Created By' ,
  dashboard.created as 'Created On'
 FROM dashboard
INNER JOIN user on user.id = dashboard.created_by
WHERE $__timeFilter(dashboard.created)

Запросы временных рядов

Установите для параметра Format значение Time series, чтобы создавать и выполнять запросы временных рядов.

Note

Чтобы выполнить запрос временного ряда, вы должны включить столбец с именем time, возвращающий либо значение SQL типа datetime, либо числовой тип данных, представляющий время UNIX epoch в секундах. Кроме того, результаты запроса должны быть отсортированы по столбцу time для правильной визуализации в панелях.

Примеры в этом разделе относятся к данным в следующей таблице:

text
+---------------------+--------------+---------------------+----------+
| time_date_time      | value_double | CreatedAt           | hostname |
+---------------------+--------------+---------------------+----------+
| 2025-01-02 03:05:00 | 3.0          | 2025-01-02 03:05:00 | 10.0.1.1 |
| 2025-01-02 03:06:00 | 4.0          | 2025-01-02 03:06:00 | 10.0.1.2 |
| 2025-01-02 03:10:00 | 6.0          | 2025-01-02 03:10:00 | 10.0.1.1 |
| 2025-01-02 03:11:00 | 7.0          | 2025-01-02 03:11:00 | 10.0.1.2 |
| 2025-01-02 03:20:00 | 5.0          | 2025-01-02 03:20:00 | 10.0.1.2 |
+---------------------+--------------+---------------------+----------+

Note

Для обратной совместимости исключение из вышеуказанного правила применяется к запросам, возвращающим три столбца, включая строковый столбец с именем metric. Вместо преобразования столбца metric в метки полей он используется как имя поля, а имя ряда устанавливается в значение столбца metric. См. следующий пример со столбцом metric.

Пример с макросом $__time(dateColumn):

SQL
SELECT
  $__time(time_date_time),
  value_double
FROM my_data
ORDER BY time_date_time

Результат панели Table:

output of time macro

В следующем примере результат включает два столбца, Time и value_double, которые представляют данные, связанные с фиксированными метками времени. Этот запрос не применяет фильтр диапазона времени и возвращает все строки из таблицы.

Пример с макросом $__timeFilter(dateColumn):

SQL
SELECT
  $__time(time_date_time),
  value_double
FROM my_data
WHERE $__timeFilter(time_date_time)
ORDER BY time_date_time

Результат панели Table:

output of time filter macro

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

Пример с макросом $__timeGroup(dateColumn,'5m'):

SQL
SELECT
  $__timeGroup(time_date_time, '5m') AS time,
  sum(value_double) AS sum_value
FROM my_data
WHERE $__timeFilter(time_date_time)
GROUP BY time
ORDER BY time

Результат панели Table:

output of time group macro

Согласно результату в следующем примере, данные группируются и агрегируются в интервалах с метками времени фиксированного шага, то есть 5 минут. Чтобы настроить форматирование имени ряда по умолчанию (необязательно), см. раздел Standard options definitions.

Пример с макросом $__timeGroupAlias(dateColumn,'5m'):

SQL
SELECT
  $__timeGroupAlias(time_date_time,'5m'),
  min(value_double),
  'min' as metric
FROM my_data
WHERE $__timeFilter(time_date_time)
GROUP BY time
ORDER BY time

Результат панели Table:

output of time group alias macro

Следующий результат похож на результат макроса $__timeGroup(dateColumn,'5m'), за исключением того, что он использует встроенный псевдоним для столбца времени. Чтобы настроить форматирование имени ряда по умолчанию (необязательно), см. раздел Standard options definitions.

Пример с макросом $__timeGroupAlias для преобразования значений null в ноль:

SQL
SELECT
  $__timeGroupAlias(createdAt,'5m',0),
  sum(value_double) as value,
  hostname
FROM my_data
WHERE
  $__timeFilter(createdAt)
GROUP BY time, hostname
ORDER BY time

Результат панели Table:

output of null values to zero case, for time group alias macro

Согласно результату в следующем примере, значения null внутри меток времени интервалов заменяются на ноль, а также по умолчанию добавляется псевдоним столбца Time. Чтобы настроить форматирование имени ряда по умолчанию (необязательно), см. раздел Standard options definitions, чтобы отобразить значение ${__field.labels.hostname}.

Пример с несколькими столбцами для макроса $__timeGroupAlias(dateColumn,'5m'):

SQL
SELECT
  $__timeGroupAlias(time_date_time,'5m'),
  min(value_double) as min_value,
  max(value_double) as max_value
FROM my_data
WHERE $__timeFilter(time_date_time)
GROUP BY time
ORDER BY time

Результат панели Table:

output with multiple colummns for time group alias macro

Запрос возвращает несколько столбцов, представляющих минимальное и максимальное значения в заданном диапазоне.

Переменные шаблонов

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

Подробную информацию об использовании переменных шаблонов с MySQL см. в разделе Переменные шаблонов MySQL.

Аннотации

Аннотации позволяют накладывать информацию о событиях на графики, помогая соотносить события с метриками. Вы можете писать SQL-запросы, возвращающие данные о событиях, для отображения в виде аннотаций на дашбордах.

Подробную информацию о создании аннотаций с MySQL см. в разделе Аннотации MySQL.

Алертинг

Вы можете использовать запросы временных рядов для создания правил алертинга, управляемых Grafana. Запросы в табличном формате не поддерживаются в условиях правил алертинга.

Подробную информацию о создании алертов с MySQL см. в разделе Алертинг MySQL.