В стандартных настройках линейной диаграммы ось X (категорий) обычно отображает размерности (например, даты, категории товаров, регионы). Однако иногда требуется разместить на оси X не размерность, а агрегированную меру (например, количество позиций в чеке, отсортированное по возрастанию), а на оси Y — другую меру (например, сумму продаж).
Решение: использование источника типа “Реестр”
Для реализации этой задачи подойдет бизнес-объект (БО) с типом хранилища SQL-запрос, где данные для осей X и Y будут получены через агрегацию и группировку.
Шаги настройки:
- Создание бизнес-объекта
- Создаем БО с типом хранилища “SQL-запрос”
- Бизнес-объект, полученный в результате агрегаций и группировок, должен содержать данные для двух полей (осей X и Y). В нашем примере: ось X - “Кол-во позиций в чеке”, ось Y - “Сумма продаж”.
- На уровне запроса может быть предусмотрена обработка переменных для фильтрации виджета на аналитической панели. Например, создадим переменную в БО «Категория» (var_category) и SQL-запрос запишем с учетом фильтрации по этой переменной:
SELECT count_item as "Id"
,count_item
,ROUND(SUM(sales)::NUMERIC, 0) sales
FROM (
SELECT order_id
,COUNT(order_id) as count_item
,SUM(sales) as sales
FROM sales_fact
WHERE :var_category = '' or category = :var_category
GROUP BY order_id
) t
GROUP BY count_item
-
Количество строк в получившемся БО должно соответствовать количеству категорий на оси X.
-
Важно указать поле, отображаемое как наименование (любой нессылочный тип) - оно и будет значением категории. В примере, это поле - “Кол-во позиций в чеке” (count_item).
-
Сортировка выполняется по значению поля «Id», поэтому если порядок элементов по оси X важен, то в него надо заложить нужную последовательность. Порядок и названия полей не важны.
-
Не забываем после всех настроек опубликовать БО и синхронизировать схему.
- Создание диаграммы
- В аналитической панели создаем диаграмму с типом “Линейная диаграмма”
- Создаем источник с типом «Реестр», выбираем в нем созданный БО и указываем его в качестве источника для линейной диаграммы.
- В настройках виджета добавляем серию, в которой указываем в качестве поля источника поле, соответствующее оси Y (“Сумма продаж”)
- После остается только настроить внешний вид графика с помощью свойств диаграммы и добавить события для взаимодействия с диаграммой пользователем через фильтры.
Таким образом, использование источника для диаграммы с типом “Реестр” с предварительно агрегированными данными позволяет разместить меру на оси X линейной диаграммы. Это решение обеспечивает:
- Гибкость (можно использовать любые численные меры для отображения зависимости между ними).
- Расширяемость (поддержка фильтрации и динамических параметров).




