DAX
July 4, 2022

Как показать TopN сопутствующих товаров?

В продолжение предыдущей статьи про средний чек родился следующий вопрос:

А как показать те товары, которые покупают с выбранным и отобрать из них лучшие?

Чтобы ответить на этот вопрос, необходимо доработать файл из предыдущей статьи (ссылка на файл как всегда в конце статьи).

Сначала создадим дубликат таблицы продуктов, с помощью которой будем выбирать товар:

Вспомогательная таблица Products Double

Полученную таблицу соединим НЕАКТИВНОЙ связью с таблицей продаж Sales:

Создание связи 'Products Double -> Sales

Далее создаём меру:

Мера суммы продаж по сопутствующим товарам в чеке

С помощью функции REMOVEFILTERS удаляются ВСЕ фильтры, которые применяются к таблице Sales из таблицы Products. А с помощью функции USERELATIONSHIP активируется связь со вспомогательной таблицей. Таким образом с помощью VALUES мы получаем список заказов, в которых был выбранный товар. Этот список в свою очередь выступает дополнительным фильтром для меры [Sum Orders Qty].

А затем визуализируем:

Результат вычисления меры

В срез добавлен столбец с наименованием из дубликата таблицы товаров 'Products Double', а в таблице столбец с наименованием из основной таблицы Products.

Обратите внимание, что на первом месте по сумме заказов в таблице расположился выбранный в срезе товар, чтобы исключить его из этого списка модифицируем меру:

Модифицированная мера продаж сопутствующих товаров

С помощью функций KEEPFILTERS и NOT "исключаем" выбранный товар.

Напоминаю: каждый аргумент фильтра внутри CALCULATE оценивается отдельно, согласно контекста вычисления.

Для наглядности вывел обе меры рядом:

Сравнение вычисления двух мер

Чтобы ограничить выборку сопутствующих товаров, воспользуемся встроенным функционалом фильтрации визуальных элементов.

Про более гибкий способ отобразить TopN чего-либо можно прочитать здесь
ТОП-5 лучших по сумме заказов

В зависимости от задачи следует выбирать соответствующую меру. Я выбрал отобрать пять лучших по сумме заказов [Sum Orders Qty], но у меня в таблице осталось только четыре наименования. Почему? Всё просто - мера [Sum Orders Qty] считает ВСЕ заказы, а не только те, в которых есть выбранный товар. Таким образом можно сделать вывод, что один из популярных товаров НЕ продаётся вместе с выбранным товаром.

Давайте изменим визуализацию, заменив меру в фильтре:

ТОП-5 сопутствующих товаров

Как видим, два списка значительно различаются между собой и можно сделать вывод, что выбранный товар не так часто продаётся с товарами, которые входят в ТОП-5 по всем заказам, чем с другими товарами.

Отчёт, чтобы пощелкать и ссылка на файл