Как вывести меру на ось X линейной диаграммы вместо размерности?

В стандартных настройках линейной диаграммы ось X (категорий) обычно отображает размерности (например, даты, категории товаров, регионы). Однако иногда требуется разместить на оси X не размерность, а агрегированную меру (например, количество позиций в чеке, отсортированное по возрастанию), а на оси Y — другую меру (например, сумму продаж).

Решение: использование источника типа “Реестр”

Для реализации этой задачи подойдет бизнес-объект (БО) с типом хранилища SQL-запрос, где данные для осей X и Y будут получены через агрегацию и группировку.

Шаги настройки:

  1. Создание бизнес-объекта
  • Создаем БО с типом хранилища “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 важен, то в него надо заложить нужную последовательность. Порядок и названия полей не важны.

  • Не забываем после всех настроек опубликовать БО и синхронизировать схему.

  1. Создание диаграммы
  • В аналитической панели создаем диаграмму с типом “Линейная диаграмма”
  • Создаем источник с типом «Реестр», выбираем в нем созданный БО и указываем его в качестве источника для линейной диаграммы.

  • В настройках виджета добавляем серию, в которой указываем в качестве поля источника поле, соответствующее оси Y (“Сумма продаж”)

  • После остается только настроить внешний вид графика с помощью свойств диаграммы и добавить события для взаимодействия с диаграммой пользователем через фильтры.

Таким образом, использование источника для диаграммы с типом “Реестр” с предварительно агрегированными данными позволяет разместить меру на оси X линейной диаграммы. Это решение обеспечивает:

  • Гибкость (можно использовать любые численные меры для отображения зависимости между ними).
  • Расширяемость (поддержка фильтрации и динамических параметров).
2 лайка