Как просто реализовать ABC сегментацию в Power BI

Привет, меня зовут Сергей Кузнецов, я продуктовый аналитик в компании Kiwitaxi. Сегодня я расскажу, как мы реализовали ABC сегментацию наших партнеров в Power BI.

На мой взгляд, способ сегментации, о котором я расскажу ниже, гораздо проще и понятнее некоторых решений, которые встречаются на просторах сети. Здесь не будет длинных и непонятных формул, а описание действий подойдет даже для новичков в Power BI.

ABC - анализ

Для начала стоит кратко рассказать принцип ABC сегментации и случаи, в которых ей стоит воспользоваться.

В основе ABC-анализа лежит принцип, по которому 20% партнеров приносят 80% дохода. Именно таких партнеров нам нужно находить и развивать, это A-сегмент нашего анализа. Далее следует B-сегмент, эти партнёры приносят нам ещё 15% дохода. И в заключении C-сегмент, которые приносят нам 5% доход.

Соответственно, при работе с партнерской базой нам необходимо в первую очередь обращать внимание на потребности A-сегмента - эти партнеры приносят большую часть дохода. Нужно стараться сделать так, чтобы партнеры из B и С сегментов перешли в сегменты выше. После проведения анализа желательно провести работу, чтобы в А-сегмент попадали 20% партнеров, в B-сегмент 30% и в С-сегмент 50%.

Структура данных

В нашей модели данных потребуется всего 2 таблицы. Одна таблица со всеми проданными товарами с указанием id партнера, который произвел покупку (Заказы), вторая таблица с партнерами (Партнеры). Связь таблиц происходит по столбцу id(1) -> *partner_id.

Для начала мы суммируем все стоимости заказов партнеров с помощью меры. При желании можно доработать формулу и взять, к примеру, сумму дохода за определенный период.

_priceSUM =

SUM('Заказы'[price])

Добавляем меру в таблицу c Партнерами. Создать столбец, добавить формулу:

priceSUM =

_Measure[_priceSUM]

Теперь мы имеем информацию о том, какой доход принес нам каждый партнер.

На следующем шаге нам необходимо проранжировать суммы доходов, чтобы расположить их в порядке убывания. Для этого используем формулу:

rank =

RANKX(

‘Партнеры’,

‘Партнеры’[priceSUM])

Данная функция по умолчанию располагает значения по убыванию, что позволяет нам отметить пустые значения последним одинаковым рангом (если такие имеются).

Рассчитываем долю

Тут все просто - делим значение суммы дохода каждого партнера на сумму дохода вместе взятых партнеров

Доля =

DIVIDE(

‘Партнеры’[priceSUM],

SUM(

Партнеры’[priceSUM]))

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

Накопительный итог доли =

CALCULATE(

SUM(

'Партнеры'[Доля]),

FILTER(

ALL('Партнеры'),

'Партнеры'[rank]<=MAX('Партнеры'[rank])))

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

Сегмент =

SWITCH(

TRUE(),

_Measure[Накопительный итог доли]<=0.8, "A",

_Measure[Накопительный итог доли]<=0.95, "B",

"C")

Последняя функция была реализована в виде столбца (а не в виде меры в таблице с партнерами) для дальнейшего подсчета количества партнеров по сегментам.

В итоге у нас получились следующие результаты:

И распределение доходов по сегментам:

Вывод: Данный инструмент даёт возможность определять и отслеживать наиболее ценных для вас партнеров. Вы получаете не просто статичный список партнеров и их сегментов, а гибкий инструмент мониторинга, который при желании может обновляться практически в реальном времени. В любой момент можно внести изменения в формулы, и Power BI автоматически пересчитает сегменты, как того требуют ваши задачи.

0
7 комментариев
Написать комментарий...
Мария Борисова

👍👍

Ответить
Развернуть ветку
Anna Orlova

Очень полезная информация 👍🏻

Ответить
Развернуть ветку
Rus Tatsujin

🧠🧠🧠

Ответить
Развернуть ветку
Мария М.

Спасибо тебе, добрый человек!!!

Ответить
Развернуть ветку
Nataliia Borysenko

А в формуле "Накопительный итог доли" не нужно ли вместо MAX использовать EARLIER?

Ответить
Развернуть ветку
Sergey Kuznetsov
Автор

Насколько я помню, если попытаться использовать функцию EARLIER в данной формуле, то будет выдавать ошибку.

Ответить
Развернуть ветку
Алексей Гаянов

Можно и через EARLIER, зависит от способа реализации.
Минус расчета ABC из BI, это большие затраты ресурсов, динамический пересчет от контекста то же страдает... Хотелось бы посчитать отфильтрованную выборку по дате или какому то признаку на 2...3 млн записей, при этом ABC должен перестраиваться динамически с учетом выборки.... У меня такое не получается. Поделитесь опытом кто так делал!!!

Ответить
Развернуть ветку
4 комментария
Раскрывать всегда