Предыдущая статья цикла - здесь
Отображение "величина - время"
Самым простым является отображение зависимости величины от времени. Для этого обычно используются панели типа Time series или Bar chart. В принципе, панель Stat в фоне также отображает график. Тип Time Series является типом панели по умолчанию.
При добавлении новой панели у вас на экране появится вот такая таблица, которую надо заполнить нужными параметрами. Типы полей таблицы вы можете посмотреть на скриншотах предыдущей статьи серии.
- База-источник (Data source) и таблица из этой БД (From), из которой будут взяты значения. Если это необходимо "по условиям задачи" - вместо нее может быть использовано представление, процедура и т.п.
- Обязательное поле - Time Column. Как я уже говорил, если в него вам подставить нечего - или придется что-то придумывать, или менять инструмент. Оно должно указывать на поле, имеющее тип даты и/или времени, и при отображении будет сопоставляться с временнЫм окном из правого верхнего угла (на скриншоте - 90 дней).
- Значение метрики (Metric Column) - это фактически деление сплошного потока данных на отдельные поименованные ряды. К примеру, если бы я хотел вести раздельные кривые по источникам - я бы в этом месте указал utm_source. В этом примере мне нужен сплошной не разделённый поток - я оставлю поле как none.
- Полезные отображаемые значения (Select). Скорее всего вам потребуется выбрать остальные столбцы, которые будут отображаться в таблице. Порядок следования полей в запросе соответствует порядку на отображении.
Такая функция работает, если вам надо выбрать и отобразить несколько полей из одной таблицы. Если источники находятся в разных таблицах - необходимо добавить новый Query (на скриншоте соответствующая кнопка находится ниже линии обреза, под строкой Format As).
Как вы понимаете, на графике можно отобразить только цифровые значения. Если значения строковые - их можно посчитать. Для этого в той же строке добавляется агрегирующая функция count (см.приведенный скриншот). При необходимости агрегирующие функции (avg, last, count, sum и т.п.) могут применяться и к цифровым значениям. Агрегирующая функция применяется к строкам, попадающим внутрь аргумента Group By, который описывается позже.
Дополнительно, можно в виде Alias указать наименование линии, которое попадет в тултип, легенду и т.п. Если этого не сделать - там будет длинная строка с функцией и ее аргументами. - При необходимости можно указать фильтр Where. Он влияет на отбор все строк в пределах данного запроса. Например, если бы нам потребовалось выбрать для отображения только референсы из Yandex - тогда нам надо добавить Expression: utm_source = 'yandex'. Не забывайте кавычки для текстовых констант.
В этой строке по умолчанию присутствует параметр Macro: $__timeFilter. Он отвечает за отбор значений только в пределах отображаемого окна. Значение, начинающееся с $, является переменной и берётся из системного поля справа вверху. До использования собственных переменных мы еще доберемся. - Предпоследняя строка - Group By - отвечает за группировку значений по столбцам. Функция time имеет два параметра.
Первый параметр - переменная $__interval - является системной и зависит от размеров панели, всего экрана и разрешения устройства. Если вас это не устраивает - можно указать "ширину столбца" вручную, например 1h, 1d, 1w и т.п.
Со вторым параметром до конца я не разобрался. Он каким-то образом отвечает за уровень отсечки, но срабатывает не всегда. Если найду нормальное описание - распишу его здесь.
При необходимости эта строка может быть дополнена собственными условиями (группировкой по типу, источнику и т.п.). Является неким эквивалентом полю metric. - Последнее поле отвечает за формат передачи данных из БД в рисующий компонент. Для встроенных панелей значения не имеет, но я встречался со случаями (например, Sankey Diagram), когда форматирование необходимо.
Справа есть еще одна панель с параметрами, влияющая на визуальное отображение графика. Там ничего сложного нет, вы с ней можете разобраться самостоятельно. Когда мы будем работать с барчартами и группировкой значений - я укажу на необходимость сделать там определенные изменения.
Табличное отображение
Второе по сложности - это таблица.
Пока вы редактируете содержимое панели типа Time Series - сверху у вас есть переключатель Table View. С его использованием вы можете проверить, какие значения возвращает ваш запрос к БД в виде таблички. Но, как только вы нажмете Apply - на страницу попадет панель с графиком. Если вам нужна именно такая таблица - вам необходим тип панели Table.
Выборка полей для него выполняется точно так же, как и для Time Series. Названия колонок удобно указывать в Alias при выборке значений.
Основные отличия для этой панели находятся именно в части графических параметров - можно включить фильтры, разбиение на страницы, подведение итогов колонок и т.п.
Индикатор агрегированной величины
Следующим мы возьмем индикатор агрегированной величины Stat.
Визуально этот индикатор похож на Time Series, но у него убраны оси и добавлена цифра, отвечающая за общее агрегированное значение по всей ширине окна.
Отбор значений выполняется также аналогично Time Series, но, если вы выберете более одной значащей строки - в одну панель будет вставлено более одной связки график + величина.
Тип агрегирующей функции для большой цифры выбирается справа в разделе Calculation (см.скриншот). Цвет большой цифры может управляться разделом Thresholds и является динамически управляемым.
Обратите внимание, что если в основном запросе у вас выполняется агрегирующая функция (например, count - вы агрегируете количество событий внутри каждых суток) - попытка выполнения count снаружи приведет в подсчету не исходных событий, а уже сагрегированных - вы получите количество суток, а не исходных записей. В этом случае вам необходимо пользоваться функцией Total (как на скриншоте).
Циферблат
Последним индикатором для сегодняшней статьи является Gauge.
Отбор значений и механизм итогового агрегирования похожи на индикатор Stat, но при этом непосредственный результат выборки из БД не отрисовывается.
Выборка нескольких столбцов также приводит к отрисовке нескольких индикаторов в приделах одной панели (см.пример)
Для демонстрации немного других механизмов я для вас сделал вот такой скриншот. Выборка на нем делается не двумя столбцами, а двумя раздельными запросами, иначе я не смог бы заполнить параметр в поле Where. Агрегирующая функция используется для обоих индикаторов одинаковая (из графических параметров панели), также к обоим применяется цветовая схема из Thresholds (зеленый до 80, красный от 80 и выше).
Изучение секретов Grafana пролжим в следующей статье цикла, подписывайтесь на канал!
Следующая статья:
В следующих статьях:
- Отображение "структура - время"
- Отображение "структура за период"
- Гистограмма
- Использование фильтров на странице
- Отображение Sankey diagram