Продолжаю цикл рассказов про тонкости использования индикаторов в пакете визуализации Grafana. Эта статья - про индикаторы со структурой, Bar Chart и Pie Chart.
Предыдущая статья цикла - здесь.
Столбчатые диаграммы
Столбчатые диаграммы используются тогда, когда необходимо отобразить изменение структуры некоего потока во времени. Для обучения попробуем создать столбчатую диаграмму с зависимостью utm_source от времени.
Отбор данных для такой диаграммы отличается двумя особенностями.
- Обязательно необходимо указать Metric Column, равный полю, по которому будет выполняться автоматическая группировка. Если этого не сделать - вы получите нерассортированный массив.
Альтернатива - писать раздельные запросы по каждому варианту значения, но их тогда надо знать заранее. Короче, можно, но неудобно. - С учетом того, что значение поля не цифровое - необходима агрегирующая функция count.
Если вы сделаете это, получите примерно вот такую не очень красивую картинку. Займемся улучшайзингом.
Проблема первая - неудобная группировка по оси дат (столбиков). По умолчанию "ширина столбика" выбирается Графаной автоматически, исходя из своих внутренних соображений. Если вас это не устраивает - можно задать группировку принудительно, в первом параметре функции time поля Group By.
Проблема вторая - неудобная маркировка по оси времени. Это можно исправить в параметре Bar labels minimum spacing справа (картинку см ниже). Он принудительно позволяет маркировать не каждый столбик, а только те, к которым надпись влезает. Как вариант - выше можно настроить написание даты по вертикали или под наклоном (Rotate bar labels).
Проблема третья - стекинг. По умолчанию (Off) столбики рисуются рядом друг с другом. В этом случае зачастую интервал между соседними группами виден плохо. Тогда можно включить Normal, и тогда столбики будут ставиться друг на друга, с учетом единого масштаба. Есть еще вариант "100%" - в этом случае вы не сможете сравнить абсолютную высоту каждого столбца (они будут визуально выровнены), а будете видеть только их внутреннюю структуру.
Круговые диаграммы
Круговые диаграммы выполняют похожую функцию, но они не отображают изменение во времени, а только структуру. В этом отношении они похожи на циферблаты из предыдущей статьи. Попробуем выбрать соответствующий тип для предыдущего запроса к БД и начнем удивляться.
Основную проблему/особенность составляет то, что внутри pie chart имеется свой дополнительный агрегатор, примерно как в Циферблате (Gauge), и по умолчанию он стоит в Last.
Эта настройка в частности может конфликтовать с функцией из Group By.
Для контроля корректности настоятельно рекомендую включать Table View и проверять глазами. Пожалуйста, ознакомьтесь с ОБОИМИ картинками под этим абзацем.
В общем, я бы предложил при параметрировании использовать следующие настройки:
- Group By = time($_interval, none)
- Calculation = Total (Не Count, не Last!!!!)
Гистограммы
Еще один похожий индикатор - это Гистограмма (Histogram). Смысловых отличий два:
- Удобен при работе именно с цифровыми значениями.
- Группировка выполняется не по уникальности значений, а по принадлежности набору диапазонов. При этом по вертикали всегда работает Count.
Посмотрим работу механизма на примере таблицы итога набранных баллов за обучение.
При реализации запроса к БД отличия будут следующие:
- Group by не нужен.
- Метрика не нужна. Если ее сделать - она сформирует отдельный "канал" на панели.
Самое интересное в гистограмме - это группировка значений. Регулируется она на панели справа.
По умолчанию Графана выбирает количество и ширину столбцов автоматически. Если это необходимо, "ширину" столбца и его смещение можно указать вручную.
Также на гистограмму можно вывести одновременно две зависимости. Они будут размещены не рядом, а друг на друге (если вас это не устраивает - придется поковыряться с bar chart), соответственно для нормального отображения мне пришлось отрегулировать fill opacity (прозрачность столбика). Если включить Combine series с предыдущей иллюстрации - будет отображен один график с суммой всех запросов.
Изучение секретов Grafana пролжим в следующей статье цикла, подписывайтесь на канал!
В следующих статьях:
- Использование фильтров на странице
- Отображение Sankey diagram