Проведение ABC-анализа и Market basket анализа при помощи MicroStrategy
Автор: Виктор Сакович
Август 2009
Автор является специалистом по построению хранилищ данных и аналитических систем, а также является сертифицированным консультантом MicroStrategy, имеет большой опыт работы с этой системой. Система анализа и отчётности MicroStrategy разрабатывалась для решения задач отчётности и анализа крупных компаний, позволяя эффективно решать задачи обработки больших объёмов данных практически неограниченным количеством пользователей, предоставляя возможности построения самых сложных алгоритмов анализа данных.
В последнее время мне часто задают вопросы, как при помощи MicroStrategy решать сложные аналитические задачи, такие как ABC-анализ, анализ рыночной корзины (market basket analysis). К сожалению, в документации MicroStrategy описания алгоритмов проведения таких видов анализа отсутствуют, а в аналитических модулях MicroStrategy отчётов, демонстрирующие такие виды анализов, недостаточно. Я попытался восполнить этот пробел, приведя примеры алгоритмов ABC-анализа и анализа рыночной корзины.
Все алгоритмы будут разрабатываться для проекта MicroStrategy Tutorial. Для упрощения работы хранилище этого проекта было портировано на MicroSoft SQL Server 2000.
ABC-анализ
АВС-анализ представляет собой разбиение элементов одного из измерений (как правило, это измерение товар или клиент) на группы в зависимости от оборота, даваемой каждым элементом этого измерения. Таким образом, решается весьма важная задача выделения 20% тех клиентов, которые дают 80% оборота, или группы товаров, которая даёт большую часть оборота. Похожие алгоритмы можно применять и для проведения XYZ-анализа, предполагающего проведения сегментации по валовой прибыли.
Предполагается, что читатель уже знаком с такими объектами MicroStrategy как фильтр, метрика, динамическая группа (custom group), хорошо понимает специфику уровневых вычислений, а также знаком с OLAP функциями MicroStrategy, в данном случае будет использована функция RunningSum.
Здесь будет проведён ABC-анализ продуктовой линейки, то есть будет сделано разбиение на группы элементов атрибута Item. Для усложнения задачи анализ будут проводиться по данным, ограниченным некоторым временным промежутком.
Для построения ABC-анализа нам необходимо проделать следующие шаги:
1. Создать фильтр Временной промежуток. Это может быть фильтр по любому атрибуту иерархии Time(drilling). В данном случае был применён следующий фильтр Month=Jan 2006, см. рис. 1.
Рис. 1
Следует отметить, что MicroStrategy Tutorial, как и остальные аналитические модули, поставляется вместе с дистрибутивом MicroStrategy. При этом данные, содержащиеся в этих приложениях могут быть разными для разных версий MicroStrategy. Здесь использовалась версия 8.1.2. Если использовать другую версию MicroStrategy, можно получить и несколько другие результаты и вы не сможете сверить свои результаты, с результатами, опубликованные в данной статье. Тем не менее точное следование пошаговому описанию алгоритмов, изложенным в данной статье, поможет Вам получить правильный результат на любых данных, в том числе и на Ваших собственных.
2. Создать метрику Оборот, представляющую собой сумму факта Revenue c фильтром Временной промежуток, как показано на рис. 2.
Рис. 2
3. Создать метрику Весь оборот, представляющую собой сумму факта Revenue c фильтром Временной промежуток. Метрику нужно вычислить на уровне атрибута Item, установив для него параметр Grouping=none (см. рис. 3).
Рис. 3
4. Создать метрику Набегающий оборот с использованием функции RunningSum, в качестве аргумента этой функции возьмём следующее выражение Оборот/Весь оборот, как показано на рис. 4. Для этой метрики лучше всего сразу задать форматирование, корректно отображающее значения, меньшие единицы, например, процентное.
Рис. 4
5. Данный пункт является необязательным, он необходим только для проверки правильности создания всех необходимых метрик. Создадим отчёт, в шаблон которого поместим атрибут Item и метрики Оборот, Весь оборот, Набегающий оборот. Отсортируем этот отчёт по убыванию по метрике Оборот. Необходимо убедиться, что итог по метрике Оборот равен метрике Весь оборот и значение метрики Набегающий оборот в первой строке равен 100%. Результат должен быть аналогичен показанному на рис. 5.
Рис. 5
6. Создать динамическую группу (custom group) ABC-анализ c разбиением по метрике Набегающий оборот, для простоты приняв ширину полос A, B и C одинаковой. Группа будет состоять из трёх элементов, первый из этих элементов создаётся следующим образом (см. рис. 6).
Рис. 6
остальные два элемента создаются аналогично.
7. Создать метрику Количество товаров, как простую метрику, следующим образом (см. рис. 7)
Рис. 7
8. Создать отчёт ABC-анализ, поместив динамическую группу (custom group) ABC-анализ и метрики Оборот, Количество товаров в шаблон этого отчёта. Отчёт должен дать следующий результат
Рис. 8
Из отчёта видно, что верхнюю треть продаж составляют продажи 14-и наименований, следующую треть продаж дают 28 наименований и 318 наименований дают нам оставшуюся треть продаж.
9. Получить список наименований, составляющих группы A, B или C можно двойным щелчком по каждой из этих групп. Так, щёлкнув по группе А, я получил список 14 наименований товаров, составляющих эту группу (см. рис. 9).
Рис. 9
Анализ рыночной корзины (Market Basket Analysis)
Анализ рыночной корзины необходим для анализа структуры чека (аналог корзины в супермаркете, отсюда и название market basket), и позволяет понять, какие продукты наиболее часто попадают вместе в один чек. Существует множество постановок этой задачи, например нужно найти, какие товары чаще всего попадают в один чек вместе с товаром А, или как часто товары категории К1 попадают в один чек вместе с товарами категории К2. Поэтому здесь будет показано решение такой задачи.
В статье будет показан алгоритм, позволяющий найти товары, чаще всего продающиеся в одном чеке с товаром Sharp VCR, для этого для каждого товара будет вычислено, какой процент от всех продаж этот товар будет продан вместе с Sharp VCR. Для решения этой задачи необходимо проделать следующие действия:
1) Создать фильтр Sharp VCR, представляющий собой квалификацию по атрибуту Item, как показано на рис. 10.
Рис. 10
2) На основе этого вспомогательного фильтра создадим фильтр, который отберёт чеки, в состав которых входит товар Sharp VCR. Это будет так называемый фильтр отношений (relationship filter), создаваемый следующим образом. Запустим редактор фильтров, выберем тип фильтра Set qualification (см. рис. 11)
Рис. 11
Тип квалификации будет Relationship (см. рис. 12).
Рис. 12
После этого зададим параметры этого фильтра, как показано на рис. 13
- Атрибут Order в качестве Output level, что означает, что мы хотим отобрать чеки (заказы).
- Фильтр Sharp VCR в окне Filter Qualification.
- Факт Revenue в окне Relate Output Level and Filter Qualification.
Рис. 13
Таким образом, данный фильтр отберёт нам чеки (Output level), в которых входят (или продавались, что отражается фактом Revenue в окне Relate Output Level and Filter Qualification), товар Sharp VCR, определённый в окне Filter Qualification.
Дополнительно щёлкнем на кнопку Advanced… и уберём галочку в поле Also apply this qualification independently of the relationship filter (рис. 14),
Рис. 14
для того, чтобы фильтр Sharp VCR не наложился на окончательный отчёт. Сохраним и закроем этот фильтр, назвав Чеки с товаром Sharp VCR.
3) Создадим метрику Количество штук всего с использованием формулы Sum(Unit Sold), как показано на рис. 15.
Рис. 15
4) Создадим метрику Количество штук в одном чеке с Sharp VCH следующим образом. Создадим копию метрики Количество штук всего, переименуем её в метрику Количество штук в одном чеке с Sharp VCH. Добавим в эту метрику фильтр Чеки с товаром Sharp VCH (рис. 16).
Рис. 16
5) Создадим метрику Доля продаж с Sharp VCH, представляющую собой отношение метрик Количество штук в одном чеке с Sharp VCH и Количество штук всего (рис. 17).
Рис. 17
Умножение на единицу необходимо для того, чтобы избежать целочисленного деления. Метрике следует назначить формат процент для корректного отображения её величин.
6) Создадим отчёт Доля продаж с Sharp VCH, в шаблон которого поместим атрибут Item, метрики Количество штук всего, Количество штук в одном чеке с Sharp и Доля продаж с Sharp VCH. После сортировки по убыванию по метрике Доля продаж с Sharp VCH отчёт должен выглядеть приблизительно следующим образом (рис. 18).
Рис. 18
Первая строка этого отчёта необходима для проверки корректности вычислений. Действительно, любой товар на 100% попадает в один чек с самим собой. По остальным значениям этой метрики можно судить о частоте попадания разных товаров в один чек с товаром Sharp VCH, так 9.98% продаж товара Sony DVD Player w/Remote происходит в одном чеке с товаром Sharp VCR.
Заключение
В статье приведены описания простейших методик проведения ABC и Market basket анализа на данных из MicroStrategy Tutorial. Я предполагаю, что буду описывать и решения других аналитических задач и поэтому будет очень признателен за замечания по поводу данной статьи. Особенно буду признателен, если оппоненты будут высказывать пожелания по методикам, которые они хотели бы видеть в следующих статьях. Со мной можно связаться по электронной почте viktor_sakovich@mail.ru
Для удобства отслеживания новых публикаций рекомендуем подписаться на рассылку или на канал RSS.


















September 17th, 2009 at 10:00 am
Виктор, большое спасибо за статью, надеюсь не последнюю.
September 17th, 2009 at 10:57 am
Наконец кто то написал в подробностях про ABC-анализ в mstr. Только к сожалению Ваше решение будет работать несколько медленно из за Custom group. Если нужна бОльшая производительность то надо стараться, что бы запрос отработал в один проход (разбивку на ABC сделать при помощи метрики), но тогда решение будет не насколько гибкое и удобное.
Про “Market Basket Analysis” в 9-ке есть встроенная функция для его реализации с пошаговым визардом. Спасибо Вам Виктор, дал ссылку своим пользователям, что бы почитали.
September 20th, 2009 at 1:03 pm
Хорошая статья, но есть два пожелания:
1. Напишите зачем делается ABC и MBA анализы и к каким выводам они могут привести. А главное, какие решения может принять исследователь на основе результатов.
2. Картинки масштабированы так, что текста на них не видно - приходится их открывать в новом окне двойным кликом. Уберите градиентную заливку в заколовках окон: правый клик на рабочем столе -> Properties -> Appearance -> Advanced. В списке Item выберите ‘Active Title Bar’, а в списках Color1 и Color2 укажите два одинаковых цвета. Мне нравится темно синий.