Неофициальный форум пользователей Qlik Sense & Qlikview

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: Ивушка от 13 марта 2019, 03:13:28

Название: И снова про АВС-анализ...
Отправлено: Ивушка от 13 марта 2019, 03:13:28
Приветствую.
Пытаюсь реализовать таблицу с АВС-группировкой по результатом продаж.
Сразу скажу, что поискала готовые примеры и почитала по этой теме вообще. Примеры с aggr() пока не разбирала, потому что эту функцию не хотелось бы использовать, из-за больших массивов своих данных. Взяла, как показалось, пример попроще.

Итак. Создала сводную таблицу с измерением Товар и Выражением Sum([ПродСум]), отсортировала Товар по убыванию по Оси Y.
Для расчета накопительных сумм продаж попыталась воспользоваться формулой:
RangeSum(Above(Sum([ПродСум]), 0, RowNo()))
Но она не работает. Точнее, накопительную сумму-то считает, но не по убыванию продаж, потому что RowNo() наплевать на выбранную мной сортировку!
Вот что творит:

Код товара   "Сумма продаж"   "Накопительная сумма"   RowNo()   Вот так считает:
Товар 100      521047,43            925953,76                            4                  1+2+3+4
Товар 106      363806,02            1289759,78                           5                  1+2+3+4+5
Товар 115      254869,51            404906,33                            3                  1+2+3
товар 117      112562,69            112562,69                            1               
Товар 130      37474,13                 150036,82                           2                  1+2

Видно, что Сумму продаж упорядочил по убыванию, а Накопительную сумму считает в соответствии с RowNo(), который подчиняется какой-то другой сортировке (возможно, по умолчанию?).
К слову, если упорядочить Товары в алфавитном порядке, RowNo() дает нормальный порядок: 1,2,3 и т.д.

Попробовала брать не сводную таблицу с формулой, а прямую таблицу просто с накоплением по сумме продаж - тоже беда с сортировкой.

Но именно RangeSum() для АВС встречала часто в примерах, почему у меня-то не работает? Подскажите, пожалуйста. Ну или подскажите как можно реализовать иначе, желательно не сильно тормозными функциями...

Всем неравнодушным спасибо! )


Название: Re: И снова про АВС-анализ...
Отправлено: millik от 19 марта 2019, 10:11:04
В агрегации лезть и не нужно.
Уже не раз рисовал ABC-анализ, поэтому с ходу подскажу своё типовое решение, которое я адаптирую под конкретные задачи.

1 колонка: Номер строки (тупо RowNo() )
2 колонка: Измерение анализа ( [Товар] )
3 колонка: Мера по которой считается нарастающий процент ( Sum([СуммаЧек]) )
4 колонка: % от мера ( Sum([СуммаЧек])/Sum(Total [СуммаЧек]) )
5 колонка: Накопленный % ( RangeSum(Above(Column(4)), Column(3)) )
6 колонка: Группа ( If(Column(4)<=$(vA)/100, 'A', If(Column(4)<=($(vB)+$(vA))/100, 'B', 'C')) )
7 колонка: Ранг в группе ( If(Column(5)=Above(Column(5)), RangeSum(Above(Column(6)), 1), 1) )

Это моя типовая заготовка таблицы, которую можно развивать дальше. Некоторые просят склеить Группу и Ранг в одно поле, кому-то не нужен накопленный процент или индивидуальный процент, кто-то просит дать возможность выбора меры или измерения и т.п.

И ещё. Есть один ВАЖНЫЙ нюанс для данного решения. Сортировка таблицы должна быть жестко зафиксирована: по убыванию результатов меры. Иначе все группы "поедут", т.к. не верно будет считаться накопленный, потому что используется функция Above().

ПС
На оптимальность решения не претендую. Возможно есть другие варианты.
Название: Re: И снова про АВС-анализ...
Отправлено: admin от 21 марта 2019, 07:55:50
Посмотрите материал от коллеги
https://qliksense.ivan-shamaev.ru/abc-advance-analysis-sortable-aggr-by-2-dimensions/
Название: Re: И снова про АВС-анализ...
Отправлено: millik от 21 марта 2019, 10:08:07
Цитата: admin от 21 марта  2019, 07:55:50  
Посмотрите материал от коллеги
https://qliksense.ivan-shamaev.ru/abc-advance-analysis-sortable-aggr-by-2-dimensions/

Спасибо.
Мои ещё не додумались анализировать АВС в динамике, но на будущее сохранил =)
Название: Re: И снова про АВС-анализ...
Отправлено: admin от 21 марта 2019, 01:19:04
В динамике совершенно другой взгляд.
Пришел к тому, что многие расчеты перевел в скрипты и анализ в динамике.
Т.к. использование расчета по скользящим на больших данных просто нереален.
И АБС и сегментация очень интереса, особенно при анализе в долях четко отслеживается влияние каких-то событий.