Возникла задача отобразить исторический ABC в таблице (по годам). Есть два измерения – Клиент и Год.
Исходный загрузочный скрипт для модели:
Продажи:
LOAD
Клиент,
Год,
Продажи
FROM [lib://Data/Данные.xlsx]
(ooxml, embedded labels, table is Лист1); Старая формула для ABC Анализа дала сбой. Для 1 измерения ABC Анализ рассчитывается корректно:
Формула для старого ABC Анализа:
=if( (aggr(rangesum(above( sum(Продажи), 0, rowno() )),(Клиент, (=sum(Продажи), DESCENDING )))/sum(TOTAL Продажи)<0.8),'A', if(aggr(rangesum(above( sum(Продажи), 0, rowno() )),(Клиент, (=sum(Продажи), DESCENDING )))/sum(TOTAL Продажи)<0.95,'B','C') )
Если в таблицу добавить измерение Год и вынести его в столбцы, то получаем некорректный расчет:
Добавляем в загрузочный скрипт ранжирование по Году и по Клиенту:
Продажи:
LOAD
AutoNumberHash128(Клиент, Год) As %КлиентГодID,
Клиент,
Год,
Продажи
FROM [lib://Data/Данные.xlsx]
(ooxml, embedded labels, table is Лист1);
NoConcatenate
Temp:
LOAD
%КлиентГодID,
Год,
Sum(Продажи) As СуммаПродаж
Resident Продажи
Group By Год, %КлиентГодID;
NoConcatenate
ПродажиПорядок:
LOAD *,
RowNo() As [Rank Продажи]
Resident Temp
Order By Год, СуммаПродаж desc;
DROP Table Temp;
DROP Field Год From ПродажиПорядок; Новая формула расчета числителя:
aggr(rangesum(above( sum(Продажи), 0, Rank(sum(Продажи)) )),([Rank Продажи],(Клиент, (=sum(Продажи), DESCENDING ))))
Новая формула расчета знаменателя:
sum(TOTAL <Год> Продажи)
Новая формула ABC Анализа с сортируемым AGGR с двумя измерениями (исторический ABC анализ по годам):
=if( (aggr(rangesum(above( sum(Продажи), 0, Rank(sum(Продажи)) )),([Rank Продажи],(Клиент, (=sum(Продажи), DESCENDING ))))/sum(TOTAL <Год> Продажи)<0.8),'A', if(aggr(rangesum(above( sum(Продажи), 0, Rank(sum(Продажи)) )),([Rank Продажи],(Клиент, (=sum(Продажи), DESCENDING ))))/sum(TOTAL <Год> Продажи)<0.95,'B','C') )
Получаем правильный вид ABC анализа:
Скачать готовый пример:
Введение Иногда при создании расширения Qlik Sense вам необходимо получить доступ к системным данным. Это…
// Команда, которая будет запускаться в Powershell на сервере LET vPowershellCommand = 'Get-ChildItem -Path ''lib://Data/QVDs''…
Как построить диаграмму Control Chart со скользящим средним в Qlik Sense? В этой статье будет…
Как сделать чередование цвета в строках прямой таблицы Qlik Sense? Если порядок строк неважен, то…
Обзор В этой серии руководств мы собираемся создать расширение Qlik Sense с использованием Nebula.js и…
Создание расширенного расширения визуализации с использованием Qlik Nebula.js и D3.js В моем последнем посте я рассказал…
This website uses cookies.
View Comments
Мое мнение такое) Если уж пришлось лезть в скрипт чтобы формировать таблицу спецом под этот сценарий ABC, проще было бы и саму сегментацию добить на стороне скрипта, и избавиться от формулы с AGGR в визуале
В случае, если не нужно иметь динамический расчет ABC Анализа, то согласен на 100%. Плюс в таком варианте - можно измерения задавать через переменные и получается конструктор. Бизнес-пользователь может посмотреть на разные варианты сегментаций и возможно что-то ценное найдет.