Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Chernov
Creator
Creator

Две таблицы фактов - списания и продажи - вопрос по формуле в таблице

Привет всем,

Уже не первый день бьюсь с решением одной простой/непростой задачи, а именно расчёт суммы, по полю к которому эта сумма не относится в динамической таблице QlikView.

Итак, есть набор данных, приведу код(автогенерация), его может любой повторить

let vDateStart = num(MakeDate(2017,9,1));

Продажи:

LOAD

   num(rand() * 500,'# ##0,00') as Сумма

   , date(daystart($(vDateStart) + (30 * rand()))) as Дата

   , ceil(rand() * 20) as Количество

   , 'Магазин' & ceil(rand()*5) as Магазин

   , 'Товар' & ceil(rand()*30) as Товар

   , 'Группа' & ceil(rand()*3) as Группа

   , 1 as ТипДвижения

Autogenerate 10000;

Списания:

LOAD

   num(rand() * 100,'# ##0,00') as Сумма

   , date(daystart($(vDateStart) + (30 * rand()))) as Дата

   , ceil(rand() * 5) as Количество

   , 'Магазин' & ceil(rand()*5) as Магазин

   , 'Товар' & ceil(rand()*30) as Товар

   , 'Группа' & ceil(rand()*3) as Группа

   , 'Операция' & ceil(rand()*5) as Операция

   , 2 as ТипДвижения

Autogenerate 500;

Join(Продажи)

LOAD * resident Списания;

drop table Списания;

NoConcatenate

Продажи2:

Load

   *

   , Year(Дата) & '-' & Month(Дата) as МесяцГод

resident Продажи;

Drop table Продажи;

В итоге нам нужна динамическая таблица (не буду описывать как она делается), но в ней должны быть измерения: периоды(дата, неделя, месяц и всё остальное), товары (в том числе их родители: группа, направление, категория), магазины (и регионы и города), тип списания.

Суть в том, что если мы отображаем в таблице "тип списания", то у нас на каждой строчке - должна быть одинаковая сумма продаж.

Конечно, списания проходят не каждый день, а продажи - чаще ежедневны.

На скриншоте, показываю две сводные таблицы (pivot table), в верхней - нет операций и сумма считается, в нижней - есть операции и сумма не отображается.

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

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

P.S. перепробовал уже много вариантов решения - не одно ни привело к успеху, в частности : джоины, конкатенейты, расчёты через переменные, разбивание на отдельные таблицы, переименовывания полей и т.д.

Вот пока этот текст писал, подумал, и кажется остался один вариант через альтернативные состояния, и период через переменные - но кажется я этот вариант тоже уже делал...

13 Replies
Chernov
Creator
Creator
Author

Как вариант, да, можно попробовать, но остается одно но. нужно видеть все суммы, не зависимо были списания или нет.. Надо подумать...

sharpjoki
Contributor II
Contributor II

Ну тогда только добавлять нулевое поле "Операция" в таблицу продаж ). Иначе никак не выведешь это поле в диаграмме, если в таблице фактов списаний вообще не происходило, а продажи при этом были.

Anna_Klimkova
Employee
Employee

Станислав,

было бы проще разбираться, если бы также выложили файл .qvw для примера и картинку желаемого результата.

Я понимаю, что вы почти все перепробовали, но почему не устраивает самый простой вариант?

На скрине pivot table в нижнем левом углу у вас видимо стоит галочка Supress When Value is Null для измерения Операция.

Если эту опцию выключить (или в таблице Продажи в скрипте завести поле Операция со значением "Операция продажи"), по крайней мере все суммы по продажам будет видно.

Если они нужны одинаковыми внутри измерения Операция:

sum({<ТипДвижения= {1}>} Total <Магазин,Дата,Группа,Товар>   Сумма)

Chernov
Creator
Creator
Author

Анна спасибо!

Всё дело было в составлении формулы - она решила полностью весь вопрос