Преобразование данных
Примечание: Скриншоты и шаги на этой странице относятся к классическому редактору запросов панели, который является общедоступным. Информацию о новом интерфейсе редактора запросов панели, который сейчас находится в режиме публичного предварительного просмотра, см. в документации по запросам и преобразованию данных.
Преобразования — это мощный способ обработки данных, возвращаемых запросом, прежде чем система применит визуализацию. С помощью преобразований вы можете:
- Переименовывать поля
- Объединять временные ряды и данные в стиле SQL
- Выполнять математические операции над результатами запросов
- Использовать результат одного преобразования как входные данные для другого
Для пользователей, которым нужны несколько представлений одного и того же набора данных, преобразования предлагают эффективный способ создания и поддержки множества дашбордов.
Вы также можете использовать результат одного преобразования как входные данные для другого преобразования, что даёт выигрыш в производительности.
Примечание: Иногда система не может отобразить преобразованные данные графически. В этом случае нажмите переключатель
Table viewнад визуализацией, чтобы переключиться на табличное представление данных. Это поможет понять итоговый результат ваших преобразований.
Типы преобразований
Grafana предоставляет несколько способов преобразования данных. Полный список преобразований см. в разделе Функции преобразований.
Порядок преобразований
Когда преобразований несколько, Grafana применяет их в том порядке, в котором они перечислены. Каждое преобразование создаёт результирующий набор, который затем передаётся следующему преобразованию в конвейере обработки.
Порядок, в котором Grafana применяет преобразования, напрямую влияет на результат. Например, если вы используете преобразование Reduce, чтобы сжать все результаты одного столбца в одно значение, то затем можно применять преобразования только к этому единственному значению.
Переменные дашборда в преобразованиях
Все поля ввода текста в преобразованиях поддерживают синтаксис переменных:
Когда вы используете переменные дашборда в преобразованиях, переменные автоматически подставляются до того, как преобразования применяются к данным.
Пример см. в разделе Использование переменной дашборда преобразования Filter fields by name.
Добавление функции преобразования к данным
Следующие шаги помогут вам добавить преобразование к данным. Эта документация не содержит шагов для каждого типа преобразования. Полный список преобразований см. в разделе Функции преобразований.
- Перейдите к панели, в которую хотите добавить одно или несколько преобразований.
- Наведите курсор на любую часть панели, чтобы отобразить меню действий в правом верхнем углу.
- Нажмите меню и выберите Edit.
- Перейдите на вкладку Transform.
- Нажмите на преобразование. Появится строка преобразования, где вы настроите его параметры. Дополнительные сведения о настройке преобразования см. в разделе Функции преобразований. Сведения о доступных вычислениях см. в разделе Calculation types.
- Чтобы применить ещё одно преобразование, нажмите Add transformation.
Это преобразование будет применено к результирующему набору, возвращённому предыдущим преобразованием.
Отладка преобразования
Чтобы увидеть входной и выходной результирующие наборы преобразования, нажмите значок ошибки (жучка) в правой части строки преобразования.
Входные и выходные результирующие наборы могут помочь вам отладить преобразование.
Отключение преобразования
Вы можете отключить или скрыть одно или несколько преобразований, нажав на значок глаза в правой верхней части строки преобразования. Это отключает применённые действия конкретного преобразования и может помочь выявить проблемы, когда вы меняете несколько преобразований одно за другим.
Фильтрация преобразования
Если в вашей панели используется более одного запроса, вы можете отфильтровать их и применить выбранное преобразование только к одному из запросов. Для этого нажмите значок фильтра в правом верхнем углу строки преобразования. Откроется раскрывающийся список с запросами, используемыми на панели. Здесь можно выбрать запрос, который вы хотите преобразовать.
Вы также можете фильтровать по аннотациям (включая примеры — exemplars), чтобы применять преобразования к ним. При этом список полей изменится и будет отражать поля во всплывающей подсказке аннотации или примера.
Значок фильтра отображается всегда, если в вашей панели более одного запроса или источника данных (то есть данные панели или аннотации), но он может не работать, если применены предыдущие преобразования для объединения результатов запросов. Это связано с тем, что одно преобразование принимает результат предыдущего.
Удаление преобразования
Мы рекомендуем удалять ненужные преобразования. При удалении преобразования вы удаляете данные из визуализации.
Перед началом:
- Определите все дашборды, которые зависят от этого преобразования, и уведомите их пользователей.
Чтобы удалить преобразование:
- Откройте панель для редактирования.
- Перейдите на вкладку Transform.
- Нажмите значок корзины рядом с преобразованием, которое хотите удалить.
Функции преобразований
С вашими данными можно выполнять следующие преобразования.
Add field from calculation
Используйте это преобразование, чтобы добавить новое поле, вычисленное из двух других полей. Каждое преобразование позволяет добавить одно новое поле.
- Mode — выберите режим:
- Reduce row — применяет выбранное вычисление к каждой строке выбранных полей независимо.
- Binary operation — применяет базовые бинарные операции (например, сложение или умножение) к значениям в одной строке из двух выбранных полей.
- Unary operation — применяет базовые унарные операции к значениям в одной строке из выбранного поля. Доступные операции:
- Absolute value (abs) — возвращает абсолютное значение заданного выражения. Оно представляет расстояние от нуля как положительное число.
- Natural exponential (exp) — возвращает e, возведённое в степень заданного выражения.
- Natural logarithm (ln) — возвращает натуральный логарифм заданного выражения.
- Floor (floor) — возвращает наибольшее целое число, меньшее или равное заданному выражению.
- Ceiling (ceil) — возвращает наименьшее целое число, большее или равное заданному выражению.
- Cumulative functions — применяет функции к текущей строке и всем предыдущим строкам.
- Total — вычисляет накопительный итог до текущей строки включительно.
- Mean — вычисляет среднее до текущей строки включительно.
- Window functions — применяет оконные функции. Окно может быть trailing (скользящим сзади) или centered (центрированным).
При скользящем окне сзади текущая строка будет последней строкой в окне.
При центрированном окне окно будет центрировано относительно текущей строки.
При чётном размере окна оно будет центрировано между текущей и предыдущей строкой.
- Mean — вычисляет скользящее среднее.
- Stddev — вычисляет скользящее стандартное отклонение.
- Variance — вычисляет скользящую дисперсию.
- Row index — вставляет поле с индексом строки.
- Field name — выберите имена полей, которые вы хотите использовать в вычислении для нового поля.
- Calculation — если вы выбрали режим Reduce row, появляется поле Calculation. Нажмите на поле, чтобы увидеть список вариантов вычислений, которые можно использовать для создания нового поля. Сведения о доступных вычислениях см. в разделе Calculation types.
- Operation — если вы выбрали режим Binary operation или Unary operation, появляются поля Operation. Эти поля позволяют применять базовые математические операции к значениям в одной строке из выбранных полей. Для бинарных операций также можно использовать числовые значения.
- All number fields — установите левую часть Binary operation, чтобы применить вычисление ко всем числовым полям.
- As percentile — если вы выбрали режим Row index, появляется переключатель As percentile. Этот переключатель позволяет преобразовать индекс строки в процент от общего числа строк.
- Alias — (необязательно) Введите имя нового поля. Если оставить это поле пустым, поле будет названо в соответствии с вычислением.
Примечание: Если в этом преобразовании используется переменная, псевдоним по умолчанию будет подставлен со значением переменной. Если вы хотите, чтобы псевдоним не зависел от изменений переменной, задайте псевдоним явно.
- Replace all fields — (необязательно) Выберите этот параметр, если хотите скрыть все остальные поля и отобразить в визуализации только вычисленное поле.
В примере ниже мы сложили два поля и назвали их Sum.
Concatenate fields
Используйте это преобразование, чтобы объединить все поля из всех фреймов в один результат.
Например, если у вас есть отдельные запросы, возвращающие данные о температуре и времени работы (запрос A), а также об индексе качества воздуха и ошибках (запрос B), применение преобразования Concatenate даёт консолидированный фрейм данных со всей соответствующей информацией в одном представлении.
Рассмотрим следующий пример:
Запрос A:
Запрос B:
После объединения полей фрейм данных будет выглядеть так:
Это преобразование упрощает процесс объединения данных из разных источников, предоставляя комплексное представление для анализа и визуализации.
Config from query results
Используйте это преобразование, чтобы выбрать запрос и извлечь стандартные параметры, такие как Min, Max, Unit и Thresholds, и применить их к результатам других запросов. Эта возможность позволяет динамически настраивать визуализацию на основе данных, возвращаемых конкретным запросом.
Параметры
- Config query — выберите запрос, который возвращает данные, используемые как конфигурация.
- Apply to — выберите поля или ряды, к которым должна применяться конфигурация.
- Apply to options — укажите тип поля или используйте регулярное выражение для имени поля в зависимости от выбора в Apply to.
Таблица сопоставления полей
Под параметрами конфигурации находится таблица сопоставления полей. В этой таблице перечислены все поля, найденные в данных, возвращённых запросом конфигурации, а также параметры Use as и Select. Она даёт контроль над сопоставлением полей со свойствами конфигурации, а при наличии нескольких строк позволяет выбрать, какое значение использовать.
Пример
Input[0] (From query: A, name: ServerA)
Input[1] (From query: B)
Output (Same as Input[0] but now with config on the Value field)
Каждая строка исходных данных становится отдельным полем. У каждого поля теперь задан параметр максимальной конфигурации. Такие параметры, как Min, Max, Unit и Thresholds, являются частью конфигурации поля. Если они заданы, они используются визуализацией вместо любых параметров, настроенных вручную на панели параметров редактора панели.
Сопоставления значений
Вы также можете преобразовать результат запроса в сопоставления значений. При этом каждая строка в результате запроса конфигурации определяет одну строку сопоставления значений. См. следующий пример.
Результат запроса конфигурации:
В сопоставлении полей укажите:
Grafana создаёт сопоставления значений из результата вашего запроса и применяет их к результатам фактического запроса данных. Вы должны увидеть, что значения сопоставляются и раскрашиваются в соответствии с результатами запроса конфигурации.
Примечание: Когда вы используете это преобразование для порогов, визуализация продолжает использовать базовый порог панели.
Convert field type
Используйте это преобразование, чтобы изменить тип указанного поля.
У этого преобразования есть следующие параметры:
- Field — выберите из доступных полей
- as — выберите FieldType, в который нужно преобразовать
- Numeric — пытается сделать значения числами
- String — сделает значения строками
- Time — пытается разобрать значения как время
- Входные данные будут разобраны в соответствии с форматом разбора Moment.js
- Числовые входные данные будут разобраны как метка времени Unix в миллисекундах. Если ваши данные в секундах, умножьте их на 1000.
- Будет показан параметр для указания DateFormat в виде строки, например yyyy-mm-dd или DD MM YYYY hh:mm:ss
- Параметр Timezone определяет, как Grafana интерпретирует входные строки без информации о часовом поясе. Если он не задан, Grafana использует часовой пояс браузера или настроенный по умолчанию часовой пояс.
- Boolean — сделает значения булевыми
- Enum — сделает значения перечислениями
- Будет показана таблица для управления перечислениями
- Other — пытается разобрать значения как JSON
Например, рассмотрим следующий запрос, который можно изменить, выбрав поле времени как Time и указав Date Format как YYYY.
Пример запроса
Результат:
Преобразованный запрос
Это преобразование позволяет гибко адаптировать типы данных, обеспечивая совместимость и согласованность в ваших визуализациях.
Extract fields
Используйте это преобразование, чтобы выбрать источник данных и извлечь из него содержимое в различных форматах. У этого преобразования есть следующие поля:
- Source — выберите поле как источник данных.
- Format — выберите один из следующих вариантов:
- JSON — разбирает содержимое JSON из источника.
- Key+value pairs — разбирает содержимое в формате ‘a=b’ или ‘c:d’ из источника.
- RegExp — разбирает содержимое с помощью регулярного выражения с именованными группами захвата вроде
/(?<NewField>.*)/.
- Auto — автоматически определяет поля.
- Replace All Fields — (необязательно) Выберите этот параметр, чтобы скрыть все остальные поля и отобразить в визуализации только вычисленное поле.
- Keep Time — (необязательно) Доступно только если Replace All Fields имеет значение true. Сохраняет поле времени в выходных данных.
Рассмотрим следующий набор данных:
Пример набора данных
Вы можете подготовить данные для использования в Time series panel с такой конфигурацией:
- Source: json_data
- Format: JSON
- Field: value
- Alias: my_value
- Replace all fields: true
- Keep time: true
Это создаст следующие выходные данные:
Преобразованные данные
Это преобразование позволяет извлекать и форматировать данные различными способами. Вы можете настроить формат извлечения в соответствии с вашими конкретными потребностями в данных.
Lookup fields from resource
Используйте это преобразование, чтобы обогатить значение поля, найдя дополнительные поля из внешнего источника.
У этого преобразования есть следующие поля:
- Field — выберите текстовое поле из вашего набора данных.
- Lookup — выберите из Countries, USA States и Airports.
Сейчас это преобразование поддерживает пространственные данные.
Например, если у вас есть такие данные:
Пример набора данных
С такой конфигурацией:
- Field: location
- Lookup: USA States
Вы получите следующие выходные данные:
Преобразованные данные
Это преобразование позволяет дополнять ваши данные, получая дополнительную информацию из внешних источников, что даёт более полный набор данных для анализа и визуализации.
Filter data by query refId
Используйте это преобразование, чтобы скрыть один или несколько запросов на панелях с несколькими запросами.
Grafana отображает буквы-идентификаторы запросов тёмно-серым текстом. Нажмите на идентификатор запроса, чтобы переключить фильтрацию. Если буква запроса белая, результаты отображаются. Если буква запроса тёмная, результаты скрыты.
Примечание: Это преобразование недоступно для Graphite, поскольку этот источник данных не поддерживает сопоставление возвращаемых данных с запросами.
В примере ниже на панели три запроса (A, B, C). Мы убрали из визуализации запрос B.
Filter data by values
Используйте это преобразование, чтобы выборочно фильтровать точки данных непосредственно в вашей визуализации. Это преобразование предоставляет параметры для включения или исключения данных на основе одного или нескольких условий, применённых к выбранному полю.
Это преобразование очень полезно, если ваш источник данных не фильтрует данные по значениям нативно. Вы также можете использовать его, чтобы сузить отображаемые значения, если используете общий запрос.
Доступные условия для всех полей:
- Is Null — совпадение, если значение равно null.
- Is Not Null — совпадение, если значение не равно null.
- Equal — совпадение, если значение равно указанному значению.
- Not Equal — совпадение, если значение не равно указанному значению.
- Regex — совпадение по регулярному выражению.
Доступные условия для строковых полей:
- Contains substring — совпадение, если значение содержит указанную подстроку (без учёта регистра).
- Does not contain substring — совпадение, если значение не содержит указанную подстроку (без учёта регистра).
Доступные условия для числовых полей:
- Greater — совпадение, если значение больше указанного.
- Lower — совпадение, если значение меньше указанного.
- Greater or equal — совпадение, если значение больше или равно.
- Lower or equal — совпадение, если значение меньше или равно.
- In between — совпадение по диапазону между указанными минимумом и максимумом, включая min и max.
Доступные условия для полей времени:
- In between — совпадение по диапазону между указанными минимумом и максимумом. Значения min и max будут предварительно заполнены переменными для фильтрации по выбранному времени.
Рассмотрим следующий набор данных:
Пример набора данных
Если вы включите точки данных с температурой ниже 30 °C, конфигурация будет выглядеть так:
- Filter Type: ‘Include’
- Condition: Rows where ‘Temperature’ matches ‘Lower Than’ ‘30’
И вы получите следующий результат, в котором включены только температуры ниже 30 °C:
Преобразованные данные
Вы можете добавить в фильтр более одного условия. Например, вы можете захотеть включить данные только если высота больше 100. Для этого добавьте это условие в следующую конфигурацию:
- Filter type: ‘Include’ rows that ‘Match All’ conditions
- Condition 1: Rows where ‘Temperature’ matches ‘Lower’ than ‘30’
- Condition 2: Rows where ‘Altitude’ matches ‘Greater’ than ‘100’
Когда у вас более одного условия, вы можете выбрать, должно ли действие (включение/исключение) применяться к строкам, которые Match all (соответствуют всем) условиям или Match any (соответствуют любому) из добавленных условий.
В примере выше мы выбрали Match all, потому что хотели включить строки с температурой ниже 30 °C И высотой выше 100. Если бы мы хотели вместо этого включить строки с температурой ниже 30 °C ИЛИ высотой выше 100, то выбрали бы Match any. Это включило бы первую строку исходных данных с температурой 32 °C (не соответствует первому условию), но высотой 101 (соответствует второму условию), поэтому она была бы включена.
Условия, которые недействительны или настроены не полностью, игнорируются.
Это универсальное преобразование фильтрации данных позволяет выборочно включать или исключать точки данных по определённым условиям. Настройте критерии так, чтобы представление данных соответствовало вашим уникальным аналитическим задачам.
Filter fields by name
Используйте это преобразование, чтобы выборочно удалять части результатов запроса. Есть три способа фильтрации имён полей:
Использование регулярного выражения
При фильтрации с помощью регулярного выражения включаются имена полей, соответствующие регулярному выражению.
Например, из входных данных:
Результат использования регулярного выражения ‘prod.*’ будет таким:
Регулярное выражение может включать подставляемую переменную дашборда с использованием синтаксиса ${variableName}.
Выбор включаемых полей вручную
Нажимайте на имена полей и снимайте отметки, чтобы удалить их из результата. Поля, соответствующие регулярному выражению, по-прежнему включаются, даже если их отметка снята.
Использование переменной дашборда
Включите ‘From variable’, чтобы можно было выбрать переменную дашборда, используемую для включения полей. Настроив [переменную дашборда][] с несколькими вариантами, можно отображать одни и те же поля в нескольких визуализациях.
Вот таблица после применения преобразования для удаления поля Min.
Вот тот же запрос с использованием визуализации Stat.
Это преобразование обеспечивает гибкость в адаптации результатов запроса, позволяя сосредоточиться на конкретных полях, необходимых для эффективного анализа и визуализации.
Format string
Используйте это преобразование, чтобы настроить вывод строкового поля. У этого преобразования есть следующие поля:
- Upper case — форматирует всю строку в верхнем регистре.
- Lower case — форматирует всю строку в нижнем регистре.
- Sentence case — форматирует первый символ строки в верхнем регистре.
- Title case — форматирует первый символ каждого слова в строке в верхнем регистре.
- Pascal case — форматирует первый символ каждого слова в строке в верхнем регистре и не включает пробелы между словами.
- Camel case — форматирует первый символ каждого слова в строке в верхнем регистре, кроме первого слова, и не включает пробелы между словами.
- Snake case — форматирует все символы строки в нижнем регистре и использует подчёркивания вместо пробелов между словами.
- Kebab case — форматирует все символы строки в нижнем регистре и использует дефисы вместо пробелов между словами.
- Trim — удаляет все начальные и конечные пробелы из строки.
- Substring — возвращает подстроку строки, используя указанные начальную и конечную позиции.
Это преобразование предоставляет удобный способ стандартизировать и адаптировать представление строковых данных для лучшей визуализации и анализа.
Format time
Используйте это преобразование, чтобы настроить вывод поля времени. Результат можно форматировать с помощью строк формата Moment.js. Например, если вы хотите отобразить только год поля времени, можно использовать строку формата ‘YYYY’, чтобы показать календарный год (например, 1999 или 2012).
До преобразования:
После применения ‘YYYY-MM-DD HH:mm:ss’:
Это преобразование позволяет адаптировать представление времени в ваших визуализациях, обеспечивая гибкость и точность при отображении временных данных.
Примечание: Это преобразование доступно в Grafana 10.1+ как альфа-функция.
Group by
Используйте это преобразование, чтобы сгруппировать данные по значению указанного поля (столбца) и выполнять вычисления для каждой группы. Нажмите, чтобы увидеть список вариантов вычислений. Сведения о доступных вычислениях см. в разделе Calculation types.
Вот пример исходных данных.
Это преобразование выполняется в два шага. Сначала вы указываете одно или несколько полей для группировки данных. Это сгруппирует все одинаковые значения этих полей вместе, как если бы вы их отсортировали. Например, если мы сгруппируем по полю Server ID, то данные будут сгруппированы так:
Все строки с одинаковым значением Server ID группируются вместе. При желании вы можете добавить подсчёт количества значений, попавших в выбранную группу.
После выбора поля для группировки данных вы можете добавить различные вычисления для других полей и применить вычисление к каждой группе строк. Например, мы могли бы захотеть вычислить среднюю температуру CPU для каждого из этих серверов. Поэтому мы можем добавить вычисление mean, применённое к полю CPU Temperature, чтобы получить следующее:
Если бы вы добавили статистику count в преобразование group by, появился бы дополнительный столбец, показывающий, что количество каждого сервера из приведённых выше было равно 3.
И мы можем добавить более одного вычисления. Например:
- Для поля Time мы можем вычислить значение Last, чтобы узнать, когда для каждого сервера была получена последняя точка данных
- Для поля Server Status мы можем вычислить значение Last, чтобы узнать, каково последнее значение состояния для каждого сервера
- Для поля Temperature мы также можем вычислить значение Last, чтобы узнать последнюю контролируемую температуру каждого сервера
Тогда мы получим:
Это преобразование позволяет извлечь важную информацию из ваших временных рядов и удобно её представить.
Grouping to matrix
Используйте это преобразование, чтобы объединить три поля — которые используются как входные данные для полей Column, Row и Cell value из результата запроса — и создать матрицу. Матрица вычисляется следующим образом:
Исходные данные
Мы можем создать матрицу, используя значения ‘Server Status’ как имена столбцов, значения ‘Server ID’ как имена строк, а ‘CPU Temperature’ как содержимое каждой ячейки. Содержимое каждой ячейки будет отображаться для существующей комбинации столбца (‘Server Status’) и строки (‘Server ID’). Для остальных ячеек вы можете выбрать, какое значение отображать: Null, True, False или Empty.
Выходные данные
Используйте это преобразование для построения матрицы, указывая поля из результатов запроса. Результат в виде матрицы отражает взаимосвязи между уникальными значениями этих полей. Это помогает представить сложные взаимосвязи в понятном и структурированном матричном формате.
Group to nested tables
Используйте это преобразование, чтобы сгруппировать данные по значению указанного поля (столбца) и выполнять вычисления для каждой группы. Создаются записи, имеющие одинаковое значение поля группировки, для отображения во вложенной таблице.
Чтобы вычислить статистику для поля, нажмите поле выбора рядом с ним и выберите параметр Calculate:
После выбора Calculate рядом с соответствующим полем появится ещё одно поле выбора, которое позволит выбрать статистику:
Сведения о доступных вычислениях см. в разделе Calculation types.
Вот пример исходных данных:
Это преобразование выполняется в два шага. Сначала укажите одно или несколько полей, по которым нужно сгруппировать данные. Это сгруппирует все одинаковые значения этих полей вместе, как если бы вы их отсортировали. Например, если вы сгруппируете по полю Server ID, Grafana сгруппирует данные так:
After choosing the field by which you want to group your data, you can add various calculations on the other fields and apply the calculation to each group of rows. For instance, you might want to calculate the average CPU temperature for each of those servers. To do so, add the mean calculation applied on the CPU Temperature field to get the following result:
Параметры отображения
Create heatmap
Используйте это преобразование, чтобы подготовить данные гистограммы для визуализации тенденций во времени. Как и визуализация heatmap, это преобразование конвертирует метрики-гистограммы во временны́е корзины (buckets).
X Bucket
Этот параметр определяет, как ось X разбивается на корзины.
- Size — укажите временной интервал во входном поле. Например, временной диапазон ‘1h’ создаёт ячейки шириной один час по оси X.
- Count — для рядов, не связанных со временем, используйте этот параметр, чтобы задать количество элементов в корзине.
Y Bucket
Этот параметр определяет, как ось Y разбивается на корзины.
- Linear
- Logarithmic — выберите между логарифмом по основанию 2 или по основанию 10.
- Symlog — использует симметричную логарифмическую шкалу. Выберите между логарифмом по основанию 2 или по основанию 10, что позволяет работать с отрицательными значениями.
Предположим, у вас есть следующий набор данных:
- При X Bucket, установленном в ‘Size: 15m’, и Y Bucket как ‘Linear’ гистограмма организует значения в интервалы по 15 минут по оси X и линейно по оси Y.
- При X Bucket как ‘Count: 2’ и Y Bucket как ‘Logarithmic (base 10)’ гистограмма группирует значения в корзины по два по оси X и использует логарифмическую шкалу по оси Y.
Histogram
Используйте это преобразование, чтобы построить гистограмму на основе входных данных, что позволяет визуализировать распределение значений.
- Bucket size — диапазон между наименьшим и наибольшим элементами в корзине (от xMin до xMax).
- Bucket offset — смещение для корзин, не начинающихся с нуля.
- Combine series — создать единую гистограмму с использованием всех доступных рядов.
Исходные данные
Ряд 1:
Ряд 2:
Выходные данные
Визуализируйте распределение значений с помощью построенной гистограммы, что даёт представление о разбросе и плотности данных.
Join by field
Используйте это преобразование, чтобы объединить несколько результатов в одну таблицу, что позволяет консолидировать данные из разных запросов.
Это особенно полезно для преобразования результатов нескольких временных рядов в единую широкую таблицу с общим полем времени.
Inner join (для временных рядов или данных в стиле SQL)
Внутреннее соединение (inner join) объединяет данные из нескольких таблиц, где все таблицы имеют одинаковое значение выбранного поля. Этот тип соединения исключает данные, у которых значения не совпадают во всех результатах.
Используйте это преобразование, чтобы объединить результаты нескольких запросов (объединение по переданному полю соединения или первому столбцу времени) в один результат и удалить строки, где успешное соединение невозможно. Это не оптимизировано для больших наборов данных временных рядов.
В следующем примере два запроса возвращают данные временных рядов. До применения преобразования inner join это визуализируется как две отдельные таблицы.
Запрос A:
Запрос B:
Результат после применения преобразования inner join выглядит так:
Это работает так же и для табличных данных, не являющихся временными рядами.
Students
Enrollments
Результат после применения преобразования inner join выглядит так:
Внутреннее соединение включает только строки, где есть совпадение между “StudentID” в обеих таблицах. В данном случае результат не включает “Jennifer” из таблицы “Students”, потому что для неё нет соответствующих записей о зачислении в таблице “Enrollments”.
Если запрос возвращает данные, не содержащие поле соединения, то ни одна строка не сможет совпасть во всех запросах, поэтому результат будет пустым. Чтобы соединить только некоторые из ваших запросов, добавьте перед соединением преобразование Filter data by query refId.
Outer join (для данных временных рядов)
Внешнее соединение (outer join) включает все данные из внутреннего соединения, а также строки, где значения не совпадают во всех входных данных. В то время как внутреннее соединение соединяет запрос A и запрос B по полю времени, внешнее соединение включает все строки, которые не совпадают по полю времени.
В следующем примере два запроса возвращают табличные данные. До применения преобразования outer join это визуализируется как две таблицы.
Запрос A:
Запрос B:
Результат после применения преобразования outer join выглядит так:
В следующем примере шаблонный запрос отображает данные временных рядов с нескольких серверов в табличной визуализации. Результаты только одного запроса можно просматривать за раз.
Я применил преобразование, чтобы соединить результаты запросов по полю времени. Теперь я могу выполнять вычисления, объединять и упорядочивать результаты в этой новой таблице.
Outer join (для данных в стиле SQL)
Табличное внешнее соединение, объединяющее таблицы так, что результат включает совпадающие и несовпадающие строки из одной или обеих таблиц.
Теперь можно соединить с:
Результат после применения преобразования outer join выглядит так:
Объединяйте и анализируйте данные из различных запросов с помощью соединения таблиц для получения комплексного представления вашей информации.
Join by labels
Используйте это преобразование, чтобы соединить несколько результатов в одну таблицу.
Это особенно полезно для преобразования результатов нескольких временных рядов в единую широкую таблицу с общим полем Label.
- Join — выберите метку для соединения среди доступных или общих для всех временных рядов.
- Value — имя для результирующего результата.
Пример
Входные данные
series1{what=“Temp”, cluster=“A”, job=“J1”}
series2{what=“Temp”, cluster=“B”, job=“J1”}
series3{what=“Speed”, cluster=“B”, job=“J1”}
Конфигурация
value: “what”
Выходные данные
Эффективно объединяйте и упорядочивайте данные временных рядов с помощью этого преобразования для получения комплексных выводов.
Labels to fields
Используйте это преобразование, чтобы преобразовать результаты временных рядов с метками или тегами в таблицу, включая ключи и значения каждой метки в результат. Отображайте метки как столбцы или как значения строк для улучшенной визуализации данных.
Дан результат запроса из двух временных рядов:
- Ряд 1: метки Server=Server A, Datacenter=EU
- Ряд 2: метки Server=Server B, Datacenter=EU
В режиме “Columns” результат выглядит так:
В режиме “Rows” результат содержит таблицу для каждого ряда и показывает каждое значение метки так:
Имя поля значения
Если вы выбрали Server как Value field name, то вы получите по одному полю для каждого значения метки Server.
Поведение при объединении
Преобразователь labels to fields внутри представляет собой два отдельных преобразования. Первое действует на отдельный ряд и извлекает метки в поля. Второе — это преобразование merge, которое соединяет все результаты в одну таблицу. Преобразование merge пытается соединить по всем совпадающим полям. Этот шаг объединения обязателен и не может быть отключён.
Чтобы проиллюстрировать это, вот пример, где у вас есть два запроса, возвращающих временные ряды без пересекающихся меток.
- Ряд 1: метки Server=ServerA
- Ряд 2: метки Datacenter=EU
Сначала это даст такие две таблицы:
После объединения:
Преобразуйте данные временных рядов в структурированный табличный формат для более ясного и упорядоченного представления.
Limit
Используйте это преобразование, чтобы ограничить количество отображаемых строк, что даёт более сфокусированное представление ваших данных. Это особенно полезно при работе с большими наборами данных.
Ниже приведён пример, иллюстрирующий влияние преобразования Limit на ответ источника данных:
Вот результат после добавления преобразования Limit со значением ‘3’:
Используя отрицательное число, вы можете сохранить значения с конца набора. Вот результат после добавления преобразования Limit со значением ‘-3’:
Это преобразование помогает адаптировать визуальное представление данных, чтобы сосредоточиться на наиболее релевантной информации.
Merge series/tables
Используйте это преобразование, чтобы объединить результаты нескольких запросов в один результат, что особенно полезно при использовании визуализации панели Table. Это преобразование объединяет значения в одну строку, если общие поля содержат одинаковые данные.
Вот пример, иллюстрирующий влияние преобразования Merge series/tables на два запроса, возвращающих табличные данные:
Запрос A:
Запрос B:
Вот результат после применения преобразования Merge.
Это преобразование объединяет значения из запроса A и запроса B в единую таблицу, улучшая представление данных для получения более качественных выводов.
Organize fields by name
Используйте это преобразование, чтобы получить гибкость в переименовании, изменении порядка или скрытии полей, возвращаемых одним запросом в вашей панели. Это преобразование применимо только к панелям с одним запросом. Если в вашей панели несколько запросов, рассмотрите возможность использования преобразования “Outer join” или удаления лишних запросов.
Преобразование полей
Grafana отображает список полей, возвращённых запросом, позволяя выполнять следующие действия:
- Set field order mode — если режим Manual, вы можете изменить порядок полей, наведя курсор на поле и перетащив его на новое место. Если режим Auto, используйте параметры OFF, ASC и DESC, чтобы упорядочить по любым меткам поля или по имени поля. Для любого поля, отсортированного ASC или DESC, можно перетащить параметр, чтобы задать приоритет сортировки.
- Change field order — наведите курсор на поле, и когда курсор превратится в руку, перетащите поле на новое место.
- Hide or show a field — используйте значок глаза рядом с именем поля, чтобы переключить видимость конкретного поля.
- Rename fields — введите новое имя в поле “Rename
”, чтобы настроить имена полей.
Пример:
Исходный результат запроса
После применения переопределений полей
Это преобразование позволяет адаптировать отображение результатов запроса, обеспечивая ясное и содержательное представление ваших данных в Grafana.
Partition by values
Используйте это преобразование, чтобы упростить процесс построения графиков нескольких рядов без необходимости в нескольких запросах с разными условиями ‘WHERE’.
Это особенно полезно при работе с таблицей метрик SQL, как показано ниже:
С помощью преобразования Partition by values вы можете выполнить один запрос и разделить результаты по уникальным значениям в одном или нескольких выбранных столбцах (полях). В следующем примере используется ‘Region’:
‘SELECT Time, Region, Value FROM metrics WHERE Time > “2022-10-20”’
Это преобразование упрощает процесс и повышает гибкость визуализации нескольких рядов в рамках одной визуализации временных рядов.
Prepare time series
Используйте это преобразование, чтобы решить проблемы, когда источник данных возвращает данные временных рядов в формате, несовместимом с нужной визуализацией. Это преобразование позволяет конвертировать данные временных рядов между широким (wide) и длинным (long) форматами, обеспечивая гибкость в структурах фреймов данных.
Доступные параметры
Широкие временные ряды
Выберите этот параметр, чтобы преобразовать фрейм данных временного ряда из длинного формата в широкий. Если ваш источник данных возвращает данные временных рядов в длинном формате, а ваша визуализация требует широкого формата, это преобразование упрощает процесс.
Широкий временной ряд объединяет данные в один фрейм с одним общим возрастающим полем времени. Поля времени не повторяются, а несколько значений располагаются в отдельных столбцах.
Пример: преобразование из длинного формата в широкий
Преобразовано в:
Многофреймовые временные ряды
Многофреймовые временные ряды разбивают данные на несколько фреймов, каждый из которых содержит два поля: поле времени и числовое поле значения. Время всегда возрастает. Строковые значения представлены как метки полей.
Длинные временные ряды
Длинный временной ряд объединяет данные в один фрейм, где первое поле — возрастающее поле времени. Поле времени может содержать дубликаты. Строковые значения находятся в отдельных полях, и их может быть больше одного.
Пример: преобразование в длинный формат
Преобразовано в:
Reduce
Используйте это преобразование, чтобы применить вычисление к каждому полю во фрейме данных и вернуть одно значение. Это преобразование особенно полезно для консолидации данных нескольких временных рядов в более компактный, обобщённый формат. При применении этого преобразования поля времени удаляются.
Рассмотрим входные данные:
Запрос A:
Запрос B:
У преобразователя reduce есть два режима:
- Series to rows — создаёт строку для каждого поля и столбец для каждого вычисления.
- Reduce fields — сохраняет существующую структуру фрейма, но сворачивает каждое поле в одно значение.
Например, если вы использовали вычисления First и Last с преобразованием Series to rows, то результат был бы таким:
Reduce fields с вычислением Last даёт два фрейма, каждый с одной строкой:
Запрос A:
Запрос B:
Это гибкое преобразование упрощает процесс консолидации и обобщения данных из нескольких временных рядов в более управляемый и упорядоченный формат.
Rename by regex
Используйте это преобразование, чтобы переименовывать части результатов запроса с помощью регулярного выражения и шаблона замены.
Вы можете указать регулярное выражение, которое применяется только к совпадениям, вместе с шаблоном замены, поддерживающим обратные ссылки. Например, представим, что вы визуализируете использование CPU по хостам и хотите убрать доменное имя. Вы можете задать регулярное выражение ‘/^([^.]+).*/’ и шаблон замены ‘$1’, тогда ‘web-01.example.com’ станет ‘web-01’.
Примечание: Преобразование Rename by regex было улучшено в Grafana v9.0.0, чтобы поддерживать глобальные шаблоны вида ‘/
/g’. В зависимости от используемого совпадения регулярного выражения это может привести к несколько иному поведению некоторых преобразований. Вы можете гарантировать такое же поведение, как раньше, обернув строку совпадения в прямые слэши ‘(/)’, например ‘(.)’ станет ‘/(.)/’.
В следующем примере мы удаляем префикс ‘A-’ из имён полей. На изображении «до» видно, что у всего есть префикс ‘A-’:
После применения преобразования видно, что осталась только оставшаяся часть строки.
Это преобразование позволяет адаптировать данные под ваши нужды визуализации, делая дашборды более информативными и удобными.
Rows to fields
Используйте это преобразование, чтобы преобразовать строки в отдельные поля. Это может быть полезно, потому что поля можно стилизовать и настраивать индивидуально. Оно также может использовать дополнительные поля как источники для динамической конфигурации полей или сопоставлять их с метками полей. Затем дополнительные метки можно использовать для задания более удачных отображаемых имён для получившихся полей.
Это преобразование включает таблицу полей, в которой перечислены все поля в данных, возвращённых запросом конфигурации. Эта таблица даёт вам контроль над тем, какое поле должно быть сопоставлено с каждым свойством конфигурации (параметр Use as). Вы также можете выбрать, какое значение использовать, если в возвращённых данных несколько строк.
Это преобразование требует:
-
Одно поле, используемое как источник имён полей.
По умолчанию преобразование использует первое строковое поле как источник. Вы можете переопределить это значение по умолчанию, выбрав Field name в столбце Use as для поля, которое хотите использовать вместо него.
-
Одно поле, используемое как источник значений.
По умолчанию преобразование использует первое числовое поле как источник. Но вы можете переопределить это значение по умолчанию, выбрав Field value в столбце Use as для поля, которое хотите использовать вместо него.
Полезно при визуализации данных в:
- Gauge
- Stat
- Pie chart
Сопоставление дополнительных полей с метками
Если поле не сопоставлено со свойством конфигурации, Grafana автоматически использует его как источник для метки выходного поля.
Пример:
Выходные данные:
Дополнительные метки теперь можно использовать в отображаемом имени поля, чтобы получить более полные имена полей.
Если вы хотите извлечь конфигурацию из одного запроса и применить её к другому, следует использовать преобразование config from query results.
Пример
Входные данные:
Выходные данные:
Как видите, каждая строка исходных данных становится отдельным полем. У каждого поля теперь также задан параметр конфигурации max. Такие параметры, как Min, Max, Unit и Thresholds, являются частью конфигурации поля, и если они заданы таким образом, они будут использоваться визуализацией вместо любых параметров, настроенных вручную на панели параметров редактора панели.
Это преобразование обеспечивает преобразование строк в отдельные поля, облегчает динамическую конфигурацию полей и сопоставляет дополнительные поля с метками.
Series to rows
Используйте это преобразование, чтобы объединить результат нескольких запросов данных временных рядов в один единственный результат. Это полезно при использовании визуализации панели Table.
Результат этого преобразования будет содержать три столбца: Time, Metric и Value. Столбец Metric добавлен, чтобы вы могли легко увидеть, из какого запроса происходит метрика. Настройте это значение, задав Label в исходном запросе.
В примере ниже у нас два запроса, возвращающих данные временных рядов. До применения преобразования это визуализируется как две отдельные таблицы.
Запрос A:
Запрос B:
Вот результат после применения преобразования Series to rows.
Это преобразование облегчает консолидацию результатов из нескольких запросов временных рядов, предоставляя оптимизированный и единый набор данных для эффективного анализа и визуализации в табличном формате.
Sort by
Используйте это преобразование, чтобы отсортировать каждый фрейм в результате запроса по указанному полю, что делает ваши данные более понятными и удобными для анализа. Настроив нужное поле для сортировки, вы можете управлять порядком представления данных в таблице или визуализации.
Используйте переключатель Reverse, чтобы обратить порядок значений в указанном поле. Эта функция особенно полезна, когда вы хотите быстро переключаться между возрастающим и убывающим порядком в соответствии с вашими аналитическими потребностями.
Например, в сценарии, где данные временных рядов извлекаются из источника данных, преобразование Sort by можно применить, чтобы упорядочить фреймы данных по метке времени — в возрастающем или убывающем порядке в зависимости от аналитических требований. Эта возможность гарантирует, что вы сможете легко просматривать и интерпретировать данные временных рядов, получая ценные выводы из упорядоченного и визуально согласованного представления.
Spatial
Используйте это преобразование, чтобы применять пространственные операции к результатам запроса.
- Action — выберите действие:
- Prepare spatial field — задать поле геометрии на основе результатов других полей.
- Location mode — выберите режим определения местоположения (эти параметры используются совместно режимами Calculate value и Transform):
- Auto — автоматически определять данные о местоположении на основе имён полей по умолчанию.
- Coords — указать поля широты и долготы.
- Geohash — указать поле geohash.
- Lookup — указать поля местоположения Gazetteer.
- Location mode — выберите режим определения местоположения (эти параметры используются совместно режимами Calculate value и Transform):
- Calculate value — использовать геометрию, чтобы задать новое поле (направление/расстояние/площадь).
- Function — выберите математическую операцию для применения к геометрии:
- Heading — вычислить направление (heading) между двумя точками.
- Area — вычислить площадь, ограниченную многоугольником, заданным геометрией.
- Distance — вычислить расстояние между двумя точками.
- Function — выберите математическую операцию для применения к геометрии:
- Transform — применить пространственные операции к геометрии.
- Operation — выберите операцию для применения к геометрии:
- As line — создать единый линейный объект с вершиной в каждой строке.
- Line builder — создать линию между двумя точками.
- Operation — выберите операцию для применения к геометрии:
- Prepare spatial field — задать поле геометрии на основе результатов других полей.
Это преобразование позволяет обрабатывать и анализировать геопространственные данные, поддерживая такие операции, как создание линий между точками, вычисление пространственных свойств и многое другое.
Time series to table transform
Используйте это преобразование, чтобы преобразовать результаты временных рядов в таблицу, превратив фрейм данных временного ряда в поле Trend, которое затем можно использовать с [типом ячейки sparkline][]. Если запросов временных рядов несколько, каждый даст отдельный табличный фрейм данных. Их можно соединить с помощью преобразований join или merge, чтобы получить единую таблицу с несколькими спарклайнами в строке.
Для каждого сгенерированного значения поля Trend можно выбрать функцию вычисления. Это значение отображается рядом со спарклайном и будет использоваться для сортировки строк таблицы.
Transpose
Используйте это преобразование, чтобы развернуть фрейм данных, преобразовав строки в столбцы, а столбцы в строки. Это преобразование особенно полезно, когда вы хотите изменить ориентацию данных, чтобы лучше соответствовать вашим потребностям визуализации. Если у вас несколько типов, по умолчанию будет использоваться строковый тип. Вы можете выбрать, как должны быть представлены пустые ячейки.
До преобразования:
После применения преобразования transpose:
Trendline
Используйте это преобразование, чтобы создать новый фрейм данных, содержащий значения, предсказанные статистической моделью. Это полезно для поиска тренда в хаотичных данных. Оно работает путём подгонки математической функции к данным с использованием линейной или полиномиальной регрессии. Затем фрейм данных можно использовать в визуализации, чтобы отобразить линию тренда.
Есть две разные модели:
- Linear — подгоняет линейную функцию к данным.
- Polynomial — подгоняет полиномиальную функцию к данным.
Примечание: Раньше это преобразование называлось regression analysis.
Smoothing
Используйте это преобразование, чтобы уменьшить шум в данных временных рядов с помощью адаптивного сглаживания. Это преобразование создаёт более плавные и чистые визуализации, сохраняя при этом все исходные временны́е точки, а также важные тренды и закономерности в ваших данных.
Преобразование Smoothing внутренне использует алгоритм ASAP (Automatic Smoothing for Attention Prioritization) для создания сглаженной кривой, которая затем интерполируется обратно на все исходные временны́е точки. Это гарантирует, что ваша визуализация сохраняет непрерывные линии без разрывов, одновременно уменьшая шум.
Доступные параметры
- Resolution — управляет интенсивностью сглаживания (1–1000). Меньшие значения дают более агрессивное сглаживание, а большие значения сохраняют больше деталей. Результат сохраняет все исходные временны́е точки.
Когда использовать сглаживание
Это преобразование полезно для:
- Зашумлённых данных временных рядов, которые скрывают лежащие в основе тренды
- Более чёткого анализа трендов и распознавания закономерностей
Пример
Рассмотрим зашумлённые данные датчика с тысячами точек:
До сглаживания:
После сглаживания (Resolution: 100):
Преобразование сохраняет все исходные временны́е точки, одновременно уменьшая шум, что даёт более плавные кривые, сохраняющие непрерывные линии без разрывов.