Автор: Виктор Сакович
Август 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.

ABC-анализ. Рисунок 1

Рис. 1

Следует отметить, что MicroStrategy Tutorial, как и остальные аналитические модули, поставляется вместе с дистрибутивом MicroStrategy. При этом данные, содержащиеся в этих приложениях могут быть разными для разных версий MicroStrategy. Здесь использовалась версия 8.1.2. Если использовать другую версию MicroStrategy, можно получить и несколько другие результаты и вы не сможете сверить свои результаты, с результатами, опубликованные в данной статье. Тем не менее точное следование пошаговому описанию алгоритмов, изложенным в данной статье, поможет Вам получить правильный результат на любых данных, в том числе и на Ваших собственных.

2. Создать метрику Оборот, представляющую собой сумму факта Revenue c фильтром Временной промежуток, как показано на рис. 2.

ABC-анализ. Рисунок 2

Рис. 2

3. Создать метрику Весь оборот, представляющую собой сумму факта Revenue c фильтром Временной промежуток. Метрику нужно вычислить на уровне атрибута Item, установив для него параметр Grouping=none (см. рис. 3).

ABC-анализ. Рисунок 3

Рис. 3

4. Создать метрику Набегающий оборот с использованием функции RunningSum, в качестве аргумента этой функции возьмём следующее выражение Оборот/Весь оборот, как показано на рис. 4. Для этой метрики лучше всего сразу задать форматирование, корректно отображающее значения, меньшие единицы, например, процентное.

ABC-анализ. Рисунок 4

Рис. 4

5. Данный пункт является необязательным, он необходим только для проверки правильности создания всех необходимых метрик. Создадим отчёт, в шаблон которого поместим атрибут Item и метрики Оборот, Весь оборот, Набегающий оборот. Отсортируем этот отчёт по убыванию по метрике Оборот. Необходимо убедиться, что итог по метрике Оборот равен метрике Весь оборот и значение метрики Набегающий оборот в первой строке равен 100%. Результат должен быть аналогичен показанному на рис. 5.

ABC-анализ. Рисунок 5

Рис. 5

6. Создать динамическую группу (custom group) ABC-анализ c разбиением по метрике Набегающий оборот, для простоты приняв ширину полос A, B и C одинаковой. Группа будет состоять из трёх элементов, первый из этих элементов создаётся следующим образом (см. рис. 6).

ABC-анализ. Рисунок 6

Рис. 6

остальные два элемента создаются аналогично.

7. Создать метрику Количество товаров, как простую метрику, следующим образом (см. рис. 7)

ABC-анализ. Рисунок 7

Рис. 7

8. Создать отчёт ABC-анализ, поместив динамическую группу (custom group) ABC-анализ и метрики Оборот, Количество товаров в шаблон этого отчёта. Отчёт должен дать следующий результат

ABC-анализ. Рисунок 8

Рис. 8

Из отчёта видно, что верхнюю треть продаж составляют продажи 14-и наименований, следующую треть продаж дают 28 наименований и 318 наименований дают нам оставшуюся треть продаж.

9. Получить список наименований, составляющих группы A, B или C можно двойным щелчком по каждой из этих групп. Так, щёлкнув по группе А, я получил список 14 наименований товаров, составляющих эту группу (см. рис. 9).

ABC-анализ. Рисунок 9

Рис. 9

Анализ рыночной корзины (Market Basket Analysis)

Анализ рыночной корзины необходим для анализа структуры чека (аналог корзины в супермаркете, отсюда и название market basket), и позволяет понять, какие продукты наиболее часто попадают вместе в один чек. Существует множество постановок этой задачи, например нужно найти, какие товары чаще всего попадают в один чек вместе с товаром А, или как часто товары категории К1 попадают в один чек вместе с товарами категории К2. Поэтому здесь будет показано решение такой задачи.

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

1) Создать фильтр Sharp VCR, представляющий собой квалификацию по атрибуту Item, как показано на рис. 10.

ABC-анализ. Рисунок 10

Рис. 10

2) На основе этого вспомогательного фильтра создадим фильтр, который отберёт чеки, в состав которых входит товар Sharp VCR. Это будет так называемый фильтр отношений (relationship filter), создаваемый следующим образом. Запустим редактор фильтров, выберем тип фильтра Set qualification (см. рис. 11)

ABC-анализ. Рисунок 11

Рис. 11

Тип квалификации будет Relationship (см. рис. 12).

ABC-анализ. Рисунок 12

Рис. 12

После этого зададим параметры этого фильтра, как показано на рис. 13

  • Атрибут Order в качестве Output level, что означает, что мы хотим отобрать чеки (заказы).
  • Фильтр Sharp VCR в окне Filter Qualification.
  • Факт Revenue в окне Relate Output Level and Filter Qualification.

ABC-анализ. Рисунок 13

Рис. 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),

ABC-анализ. Рисунок 14

Рис. 14

для того, чтобы фильтр Sharp VCR не наложился на окончательный отчёт. Сохраним и закроем этот фильтр, назвав Чеки с товаром Sharp VCR.

3) Создадим метрику Количество штук всего с использованием формулы Sum(Unit Sold), как показано на рис. 15.

ABC-анализ. Рисунок 15

Рис. 15

4) Создадим метрику Количество штук в одном чеке с Sharp VCH следующим образом. Создадим копию метрики Количество штук всего, переименуем её в метрику Количество штук в одном чеке с Sharp VCH. Добавим в эту метрику фильтр Чеки с товаром Sharp VCH (рис. 16).

ABC-анализ. Рисунок 16

Рис. 16

5) Создадим метрику Доля продаж с Sharp VCH, представляющую собой отношение метрик Количество штук в одном чеке с Sharp VCH и Количество штук всего (рис. 17).

ABC-анализ. Рисунок 17

Рис. 17

Умножение на единицу необходимо для того, чтобы избежать целочисленного деления. Метрике следует назначить формат процент для корректного отображения её величин.

6) Создадим отчёт Доля продаж с Sharp VCH, в шаблон которого поместим атрибут Item, метрики Количество штук всего, Количество штук в одном чеке с Sharp и Доля продаж с Sharp VCH. После сортировки по убыванию по метрике Доля продаж с Sharp VCH отчёт должен выглядеть приблизительно следующим образом (рис. 18).

ABC-анализ. Рисунок 18

Рис. 18

Первая строка этого отчёта необходима для проверки корректности вычислений. Действительно, любой товар на 100% попадает в один чек с самим собой. По остальным значениям этой метрики можно судить о частоте попадания разных товаров в один чек с товаром Sharp VCH, так 9.98% продаж товара Sony DVD Player w/Remote происходит в одном чеке с товаром Sharp VCR.

Заключение

В статье приведены описания простейших методик проведения ABC и Market basket анализа на данных из MicroStrategy Tutorial. Я предполагаю, что буду описывать и решения других аналитических задач и поэтому будет очень признателен за замечания по поводу данной статьи. Особенно буду признателен, если оппоненты будут высказывать пожелания по методикам, которые они хотели бы видеть в следующих статьях. Со мной можно связаться по электронной почте viktor_sakovich@mail.ru


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

Читайте также: