|
XYZ-анализ используется для классификации элементов выборки по регулярности их вхождения в эту выборку (http://ru.wikipedia.org/wiki/XYZ-анализ)
В отличии от ABC-анализа, выборка должна содержать не только данные интересующих нас показателей за определенный период, но еще и данные внутреннего периода, в котором зарегистрирован данный показатель. Примерами применения XYZ-анализа могут быть:
1. Классификация товаров (или брендов, или групп товаров) по регулярности величины их продаж (примерами такой величины могут служить количество событий продаж, количество единиц проданного либо сумма проданного);
2. Классификация клиентов по регулярности величины отношений (примерами величины отношений могут послужить количество контактов с клиентом, количество событий покупок, количество купленных единиц товара, сумма купленного товара);
3. Классификация товаров по регулярности присутствия их на товарных остатках
Механизмы XYZ-анализа входят в существующие на сегодня типовые решениях 1С. Более того, они являются одними из самых основных инструментов анализа эффективности торговой деятельности предприятия.
В статье обобщен накопленный опыт и описан универсальный подход, позволяющий использовать механиз запросов 1С для эффективного расчета XYZ-классов объектов в любой выборке.
Пример исходной таблицы для XYZ-анализа:
|
Номенклатура / период
|
06.10.2008
|
20.10.2008
|
27.10.2008
|
|
BOSCH морозильная камера
|
|
|
|
|
BOSCH холодильник
|
|
|
|
|
Ассорти (конфеты)
|
26,23
|
2,91
|
|
|
Барбарис (конфеты)
|
32,62
|
|
|
|
Батон горчичный нарезаный КХЗ №1
|
9,82
|
0,39
|
|
|
Батон нарезной КХЗ №1
|
8,52
|
|
|
|
Белочка (конфеты)
|
20,4
|
|
|
|
Бычок мороженый
|
141,17
|
|
|
|
Вентилятор BINATONE ALPINE 160вт, напольный ,
|
|
|
|
|
Вентилятор JIPONIC (Тайв.),
|
|
|
|
|
Вентилятор ОРБИТА,STERLING,ЯП.
|
|
|
|
|
Вобла Астраханская вяленая
|
145,46
|
|
|
|
Диван для отдыха
|
|
|
797,11
|
Метод состоит из двух основных этапов:
1) Организация выборки данных;
2) XYZ-анализ предоставленной выборки.
Начиная с версии 1С 8.1, язык запросов позволяет создавать пакетные запросы с использованием временных таблиц. Это существенно упрощает процесс обработки данных в нашем случае. Для примера приведем текст запроса, в котором анализируется выборка продаж за указанный период в разрезе договоров контрагентов (запрос может быть использован в конфигурации "Управление производственным предприятием для Украины", редакция 1.1")
"Управление производственным предприятием для Украины", редакция 1.1
Разработка конфигурации: "ABBYY Ukraine", 2005-2006 (1.1.5.6)
// Первая часть запроса - организация выборки данных
ВЫБРАТЬ
ПродажиОбороты.Номенклатура КАК Группировка,
ВЫРАЗИТЬ(ПродажиОбороты.Период КАК ДАТА) КАК Период,
СУММА(ПродажиОбороты.СтоимостьОборот) КАК ЗначениеПоказателя
ПОМЕСТИТЬ
ТаблицаВыборкиПоГруппировкамИПериодам
ИЗ
РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, Неделя, ) КАК ПродажиОбороты
СГРУППИРОВАТЬ ПО
ПродажиОбороты.Номенклатура,
ПродажиОбороты.Период
;
// вторая часть запроса - XYZ - анализ выборки данных
ВЫБРАТЬ
ТаблицаВыборкиПоГруппировкам.Группировка КАК Группировка,
ТаблицаВыборкиПоГруппировкам.СуммаПоказателя КАК ЗначениеПоказателя,
ВЫБОР КОГДА ТаблицаВыборкиПоГруппировкам.СуммаПоказателя <> 0
ТОГДА СУММА(
(ТаблицаВыборкиПоГруппировкамИПериодам.ЗначениеПоказателя - ТаблицаВыборкиПоГруппировкам.СреднееЗначениеПоказателя)
*(ТаблицаВыборкиПоГруппировкамИПериодам.ЗначениеПоказателя - ТаблицаВыборкиПоГруппировкам.СреднееЗначениеПоказателя))
/ ТаблицаВыборкиПоГруппировкам.СуммаПоказателя / ТаблицаВыборкиПоГруппировкам.СуммаПоказателя
ИНАЧЕ 1
КОНЕЦ КАК Коэффициент,
ВЫБОР КОГДА ТаблицаВыборкиПоГруппировкам.СуммаПоказателя <> 0
ТОГДА ВЫБОР КОГДА СУММА(
(ТаблицаВыборкиПоГруппировкамИПериодам.ЗначениеПоказателя - ТаблицаВыборкиПоГруппировкам.СреднееЗначениеПоказателя)
*(ТаблицаВыборкиПоГруппировкамИПериодам.ЗначениеПоказателя - ТаблицаВыборкиПоГруппировкам.СреднееЗначениеПоказателя))
/ ТаблицаВыборкиПоГруппировкам.СуммаПоказателя / ТаблицаВыборкиПоГруппировкам.СуммаПоказателя < &ГраницаКлассаX * &ГраницаКлассаX / 10000
ТОГДА "XКласс"
КОГДА СУММА(
(ТаблицаВыборкиПоГруппировкамИПериодам.ЗначениеПоказателя - ТаблицаВыборкиПоГруппировкам.СреднееЗначениеПоказателя)
*(ТаблицаВыборкиПоГруппировкамИПериодам.ЗначениеПоказателя - ТаблицаВыборкиПоГруппировкам.СреднееЗначениеПоказателя))
/ ТаблицаВыборкиПоГруппировкам.СуммаПоказателя / ТаблицаВыборкиПоГруппировкам.СуммаПоказателя < &ГраницаКлассаY * &ГраницаКлассаY / 10000
ТОГДА "YКласс"
ИНАЧЕ "ZКласс"
КОНЕЦ
ИНАЧЕ "ZКласс"
КОНЕЦ КАК XYZ_класс
ИЗ
(ВЫБРАТЬ
ТаблицаВыборкиПоГруппировкамИПериодам.Группировка,
СУММА(ТаблицаВыборкиПоГруппировкамИПериодам.ЗначениеПоказателя) КАК СуммаПоказателя,
СУММА(ТаблицаВыборкиПоГруппировкамИПериодам.ЗначениеПоказателя) / ТаблицаКоличестваПериодов.КоличествоПериодов КАК СреднееЗначениеПоказателя
ИЗ
ТаблицаВыборкиПоГруппировкамИПериодам,
(ВЫБРАТЬ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Период) КАК КоличествоПериодов
ИЗ
ТаблицаВыборкиПоГруппировкамИПериодам
) КАК ТаблицаКоличестваПериодов
СГРУППИРОВАТЬ ПО
Группировка,
ТаблицаКоличестваПериодов.КоличествоПериодов
) КАК ТаблицаВыборкиПоГруппировкам
ЛЕВОЕ СОЕДИНЕНИЕ
ТаблицаВыборкиПоГруппировкамИПериодам
ПО
ТаблицаВыборкиПоГруппировкам.Группировка = ТаблицаВыборкиПоГруппировкамИПериодам.Группировка
СГРУППИРОВАТЬ ПО
ТаблицаВыборкиПоГруппировкам.Группировка,
ТаблицаВыборкиПоГруппировкам.СуммаПоказателя,
ТаблицаВыборкиПоГруппировкам.СреднееЗначениеПоказателя
УПОРЯДОЧИТЬ ПО
Коэффициент ВОЗР
;
УНИЧТОЖИТЬ
ТаблицаВыборкиПоГруппировкамИПериодам
Параметры запроса:
1. Дата1 - дата начала анализа
2. Дата2 - дата окончания анализа
3. ГраницаКлассаX - часть (в процентах, как правило, 15%) наиболее регулярного класса X
4. ГраницаКлассаY - часть (в процентах, как правило, 50%) среднего класса Y
Пример результата запроса по продажам товаров:
|
|
|
|
| Группировка |
ЗначениеПоказателя |
Коэффициент |
XYZ_класс |
| Диван для отдыха |
2 797,11 |
0,191008 |
XКласс |
| BOSCH холодильник |
3 019,98 |
0,231542 |
XКласс |
| Ремонт дивана |
51,46 |
0,34846 |
YКласс |
| Тарелки одноразовые |
87,08 |
0,348729 |
YКласс |
| Дизайнерские работы |
98,38 |
0,350885 |
YКласс |
| Рюмки одноразовые 50мл |
178,51 |
0,358499 |
YКласс |
| Средство Bingo Super для посуды 1000г |
39,11 |
0,392969 |
YКласс |
| Белочка (конфеты) |
25,7 |
0,519829 |
YКласс |
| Фруктовые (вафли) |
26,27 |
0,646672 |
ZКласс |
| Ассорти (конфеты) |
29,14 |
0,667442 |
ZКласс |
| Кресло-качалка |
909,24 |
0,764794 |
ZКласс |
| Батон горчичный нарезаный КХЗ №1 |
10,21 |
0,773745 |
ZКласс |
| Средство для мытья посуды Dax 500 г |
193,74 |
0,781464 |
ZКласс |
| Батон нарезной КХЗ №1 |
8,63 |
0,822055 |
ZКласс |
| Средство для посуды Dosia 500мл |
8,97 |
0,840278 |
ZКласс |
| Стол компьютерный СК-14 |
173,64 |
0,840278 |
ZКласс |
| Спальный гарнитур "Елена" |
480,85 |
0,840278 |
ZКласс |
| Сигареты Karelia Slims |
46,14 |
0,840278 |
ZКласс |
| Сигареты Gauloises Blondes Filter |
50,16 |
0,840278 |
ZКласс |
| Сигареты Davidoff Lights |
31,73 |
0,840278 |
ZКласс |
| Телевизор SAMSUNG CS-21 K 2 |
108,77 |
0,840278 |
ZКласс |
| Сигареты Chesterfield |
18,26 |
0,840278 |
ZКласс |
| Сигареты Camel |
12,1 |
0,840278 |
ZКласс |
| Сердечко (печенье) |
15,59 |
0,840278 |
ZКласс |
| Толстолобик мороженый |
137,75 |
0,840278 |
ZКласс |
| Компьютер |
276,29 |
0,840278 |
ZКласс |
| Пылесос "Энергия-SANYO" |
59,38 |
0,840278 |
ZКласс |
| Доставка до границы |
70,02 |
0,840278 |
ZКласс |
| BOSCH морозильная камера |
1 492,83 |
0,840278 |
ZКласс |
| Средство для мытья посуды Dosia + тарелки |
2,97 |
0,840278 |
ZКласс |
| Средство для мытья посуды (Dosia + Dax) + тарелки |
1,11 |
0,840278 |
ZКласс |
| Барбарис (конфеты) |
32,62 |
0,840278 |
ZКласс |
| Бычок мороженый |
141,17 |
0,840278 |
ZКласс |
| Вентилятор BINATONE ALPINE 160вт, напольный , |
50,55 |
0,840278 |
ZКласс |
| Вентилятор JIPONIC (Тайв.), |
108,88 |
0,840278 |
ZКласс |
| Вентилятор ОРБИТА,STERLING,ЯП. |
1 292,28 |
0,840278 |
ZКласс |
| Вобла Астраханская вяленая |
145,46 |
0,840278 |
ZКласс |
| Кондиционер ELEKTA |
807,68 |
0,840278 |
ZКласс |
| Кондиционер FIRMSTAR 12М |
715,04 |
0,840278 |
ZКласс |
| Кондиционер БК-2300 |
157,09 |
0,840278 |
ZКласс |
| Кухонный гарнитур "Тинга-2" |
213,71 |
0,840278 |
ZКласс |
| Кухонный гарнитур "Тинга-У" |
240,43 |
0,840278 |
ZКласс |
| Кухонный гарнитур "Тинга" |
3 701,92 |
0,840278 |
ZКласс |
| Прихожая "Престиж-5У" |
200,35 |
0,840278 |
ZКласс |
| Пылесос "Омега" 1250вт |
135,98 |
0,840278 |
ZКласс |
| Пылесос "Электросила" |
89,07 |
0,840278 |
ZКласс |
Основным достоинством данного метода является его универсальность, ведь он работает с любой выборкой данных. Кроме того, благодаря использованию механизма запросов, существенно повышена производительность работы с большими объемами данных (более чем в 10 раз по сравнению с традиционными алгоритмами обработки, использующими таблицы значений). Для анализа различных показателей остается лишь правильно организовать входящую выборку.
Примеры организации выборок:
1. Выборка продаж в разрезе товарной номенклатуры по неделям:
ВЫБРАТЬ
ПродажиОбороты.Номенклатура КАК Группировка,
ВЫРАЗИТЬ(ПродажиОбороты.Период КАК ДАТА) КАК Период,
СУММА(ПродажиОбороты.СтоимостьОборот) КАК ЗначениеПоказателя
ПОМЕСТИТЬ
ТаблицаВыборкиПоГруппировкамИПериодам
ИЗ
РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, Неделя, ) КАК ПродажиОбороты
СГРУППИРОВАТЬ ПО
ПродажиОбороты.Номенклатура,
ПродажиОбороты.Период
2. Выборка продаж по неделям в разрезе клиентов:
ВЫБРАТЬ
ПродажиОбороты.ДоговорКонтрагента.Владелец КАК Группировка,
ПродажиОбороты.Период КАК Период,
СУММА(ПродажиОбороты.СтоимостьОборот) КАК ЗначениеПоказателя
ПОМЕСТИТЬ
ТаблицаВыборкиПоГруппировкамИПериодам
ИЗ
РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, Неделя, ) КАК ПродажиОбороты
ГДЕ
НЕ ПродажиОбороты.ДоговорКонтрагента.Владелец ЕСТЬ NULL
СГРУППИРОВАТЬ ПО
ПродажиОбороты.ДоговорКонтрагента,
ПродажиОбороты.Период
Прокопенко Константин Игоревич
Направление бизнес-приложений Руководитель сектора управленческого учета ЗАТ "Спец-інвест"
|