{"id":14293,"url":"\/distributions\/14293\/click?bit=1&hash=05c87a3ce0b7c4063dd46190317b7d4a16bc23b8ced3bfac605d44f253650a0f","hash":"05c87a3ce0b7c4063dd46190317b7d4a16bc23b8ced3bfac605d44f253650a0f","title":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u043d\u0435 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0432 \u043d\u0438 \u043a\u043e\u043f\u0435\u0439\u043a\u0438","buttonText":"","imageUuid":""}

RFM в Power BI

RFM-анализ в Power BI.

В этой статье я хочу рассказать как построить RFM-анализ полностью в Power BI.

При большом объеме данных (нескольких млн. строк) удобнее и быстрее производить такой анализ при помощи Python, в т. ч. с возможностью последующей визуализации итоговой сводной сегментации в Power BI. Но бывают случаи, когда компании настаивают на использовании в работе определенных офисных приложений, в основном, это ПО MS Microsoft. В этом случае можно провести анализ в Excel, но если датасет включает более 20 000 тыс. строк, такая задача займет значительное количество времени (Excel, скорее всего, подвиснет на час другой) и совершения покупок клиентом в рассматриваемом периоде сил.

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

Непосредственно про RFM-Анализ написано много статей, поэтому в этой я сосредоточусь на практике в разрезе PBI.

Вкратце напомню.

RFM-анализ – анализ, целью которого является сегментация клиентов по таким показателям как Давность покупки, Частота покупок, Сумма покупок, и выявление группы клиентов, приносящих наибольшую выручку. По итогам анализа для каждого сегмента можно разработать план действий по удержанию, развитию, поддержке клиентов. Возможно, сократить ресурсы на коммуникацию с клиентами, попавшими в сегмент «Потерянных» (группа 333).

Перед проведением анализа стоит рассмотреть свою клиентскую базу в разрезе страт: есть ли необходимость в разбивке? какая детализация рациональна? и т. д. Например, если у вас есть дифференциация по клиентам, например, B2C, B2B, то анализ для них нужно проводить по отдельности. Также при сильной диверсификации услуг (как то: продажа хозтоваров на онлайн-платформе, и продажа недвижимости на ней же) клиентов при анализе лучше также разделить.

Основные показатели, которые мы будем рассчитывать:

R (Recency) – давность последней покупки. Сколько дней (недель, месяцев, т. д.) прошло с

момента последней покупки.

F (Frequency) – частота совершения покупок клиентом в рассматриваемом периоде. Сколько

покупок суммарно было совершено за рассматриваемый период.

M (Monetary) – сумма покупок клиентом в рассматриваемом периоде. На какую сумму всего

клиент купил в рассматриваемом периоде.

Для проведения анализа вам потребуется следующая информация:

- клиенты (ID, др. идентификатор. Важно – он должен быть уникальным в разрезе выгрузки из БД) ;

- дата последней покупки;

- сумма покупок или выгрузка покупок по выбранной вами детализации временнОго периода – дни, недели, месяцы (ниже мы рассмотрим вариант с помесячными данными покупок) ;

- количество покупок по выбранной вами детализации временнОго периода – дни, недели, месяцы (ниже мы рассмотрим вариант с помесячными данными покупок: один месяц с суммой покупки = купили 1 раз) ;

В рассматриваемом примере данные из БД выгружаются так

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

На основе этой таблицы фактов создадим вспомогательный файл: на этапе преобразования таблиц дублируем нашу таблицу фактов и называем полученную таблицу «Вспомогательная д_RFM».

В этой таблице мы будем рассчитывать базовые показатели – R, F, M. Это мы сделаем на этапе Power Query, т.к. некоторые функции DAX, такие как procentile.INC, некоторые функции обработки таблиц, не применяются к вычисляемым столбцам.

В получившейся таблице «Вспомогательная д_RFM»:

1) Посчитаем Давность последней покупки (Recency) в днях. Для этого в закладке Добавление столбца, выбираем Настраиваемый столбец. В появившемся окне задаем название, в этом примере “datediff”,

В поле «Настраиваемая формула столбца» вписываем Duration. ToRecord, из правого поля со списком столбцов выбираем нужные ([Текущая дата], [Дата последней покупки ]) и добавляем их в формулу при помощи кнопки «Вставить».

Далее нажимаем в получившемся столбце на стрелки в поле с названием столбца и выбираем нужный уровень детализации.

Теперь нам нужно создать столбцы Число покупок за период (Frequency) и Сумма покупок (Monetary) . Для этого выделяем все столбцы с помесячными продажами зажав Shift, и отменяем свертывание выбранных столбцов

Получается следующее:

Т. е. у нас каждая запись по клиенту идет отдельной строкой, а не как изначально: 1 клиент = 1 строчка и много столбцов.

Воспользуемся Группировкой

И сразу зададим 2 группировки: по Клиенту и Сумме в столбце «Значение», по Клиенту и Количеству в столбце «Значение».

В столбце Значение есть нулевые данные: на сумму они не повлияют, но повлияют на результат при подсчете количества. Поэтому после получения столбцов, в запрос в командной строке нужно добавить дополнительное условие по столбцу «Число покупок за период»: добавьте условие (each [Значение]>0) через функцию Table. SelectRows() .

В полученной таблице удаляем лишние столбцы, меняем тип данных на нужный, получаем:

Теперь нам нужно получить краткое описание данных датасета. Т. е. в случае с RFM нужно увидеть как данные распределяются по процентилям. Для этого создадим дополнительную таблицу-справочник. Я разбивала от 10 до 100 с шагом в 10 процентилей. И в этой же таблице произвела разбивку на группы по показателям Recency, Frequency, Monetary.

Таблица создана через функцию DAX – SELECTCOLUMNS (В формулах мы ссылаемся на столбцы таблицы "Вспомогательная д_RFM") ,

а разбивка по R, F, M — через функцию IF (В формулах мы ссылаемся на столбцы таблицы "Вспомогательная д_RFM" и текущей таблицы).

Теперь это наш основной справочник – в нем можно пересмотреть разбивку на группы и вместо 3 групп по каждому показателю использовать, например, 5, более подробно разделяя категории.

Мне было удобнее продублировать таблицу «Вспомогательная д_RFM» и уже подтягивать данные в нее. Вспомогательная остается в этом случае как готовая «чистая» таблица, на основе которой в дальнейшем можно, например, создать еще одну таблицу с RFM, но уже с другой группировкой (более мелкие группы) и оценить оптимальность новой сегментации в сравнении со старой.

Итак, таблица «RFM» — дубль Вспомогательной. В нее подтягиваем данные по категориям R,F,M.

Создаем столбцы с полным номером сегмента и полным названием сегмента RFM (через функцию объединения значений — &).

Теперь нужно создать сводную таблицу, сгруппировав данные по RFM#. Такую таблицу можно создать через DAX (summarize):

В используемом файле (был взят ради примера) было всего порядка 200 строк (клиентов), поэтому получилось 19 групп. Обычно кол-во клиентов в БД превышает 200 ID. Т.о. в итоге при большой БД должно получится 27 групп при разбивке R, F, M на 3 группы каждый

В эту же таблицу добавим вычисляемый столбец с долей сегмента:

Далее можно создать в Excel таблицу действий по сегментам и подгрузить ее в Power BI.

Эти рекомендации можно подтягивать в сводную по RFM, либо в таблицу «RFM».

Визуализируем итог RFM-анализа:

с использованием среза
ручным выбором

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

Спасибо за прочтение этой статьи!

0
3 комментария
Катерина

Подскажите, как добавить [Текущая дата]

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

вы можете добавить текущую дату в Power Query через создание нового столбца. Внесите формулу "=Date.From(DateTime.LocalNow())" это на языке М. В данном случае, перед сохранением и загрузкой таблицы, вам нужно изменить тип данных в этой колонке на Дата. Либо текущую дату можно задать уже в DAX, создав вычисляемый столбец с формулой "=TODAY()"

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

вы можете добавить текущую дату в Power Query через создание нового столбца. Внесите формулу "=Date.From(DateTime.LocalNow())" это на языке М. В данном случае, перед сохранением и загрузкой таблицы, вам нужно изменить тип данных в этой колонке на Дата. Либо текущую дату можно задать уже в DAX, создав вычисляемый столбец с формулой "=TODAY()"

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