QlikView - отобразить последнее значение в каждом месяце

Автор Vladimir_F, августа 15, 2016, 05:54:49 pm

« предыдущая - следующая »

Vladimir_F

августа 15, 2016, 05:54:49 pm Последнее редактирование: августа 18, 2016, 04:03:17 pm от Vladimir_F
Немного перефразирую (см.картинку 2)

Задача(она сложнее. но решения этой должно помочь мне):

Есть Периоды(месяца, грубо говоря..  201405 итд).
есть наименование продуктов. 
есть Сумма продаж.   

оч просто. - всего три поля.

из них два измерения (период и наименование... причём период надо опустить) и одна сумма продаж. . 


Нужно чтобы в кликвью без модификации скрипта загрузки  таблица выводила по продуктам последнюю значимаю сумму продаж за месяц.  Можете сравнить это с остатками на конец месяца(просто вместо "max" будет "SUM". . у какого-то продукта этот "остаток" был в январе.  у кого-то в марте. .итд. .

я думал что легко сделать, просто задав в измерение одно поле "наименование", а в выражение впихнуть
sum({<Период={'$(=max(Период))'}>}Сумма)
но не тут-то было. $(=max(Период))  интерпретируется как вообще максимальный период в документе. . соответственно у многих продуктов будет  по нулям остаток на этот самый последний месяц. а мне нужно на ИХ последний месяц..   пробовал в выражение впихнуть просто =max(Период)..  месяца отображаются нормально(если почему-то пустые значения тоже считает значимыми, то max(if(Сумма>0,Период)) , но как только пытаюсь в формулу суммирования вставить - ничего не получается..

я бы в загрузке чего-нибудь из SQL поменял, но работа нужна именно в клике.. потому что эти три поля динамические - зависят от различных выборок типа "Валюта", "Тип", "Клиенты"  итд..

прошу помощи в решении этой, на мой взгляд. актуальной задачи.. 
П.С.: буду благодарен если научите меня запихивать sum({<Период={'$(=max(Период))'}>}Сумма)
  чтоб нормально считало (если такое возможно)

Текст старого сообщения в спойлере ( не  нужно)
Извините, вам запрещён просмотр содержимого спойлеров.

Vladimir_F

Сам спросил - сам ответил.

Нашёл решение.
Аггрегирование нужно.

FirstSortedValue(Aggr(Sum(Сумма), Период, Продукт), -Aggr(Период, Период, Продукт))

т.е. оставляем одно измерение - Продукт..   и одно выражение (вот которое сейчас написал)

я вскользь пробегал по этой формуле, но, как оказалось, в тестовом файле (я накидал небольшой файл, чтобы удобно было искать способ решения проблемы) неправильно загрузились пустые значения.. то есть, из экселя когда подгрузил данные в тестовый файл - пустые значения для формул стали "значимыми".   поэтому ФОРМУЛА не работала!  точнее - она считала что у всех продуктов последние значимые суммы были в самом последнем месяце документа, а не месяца, в котором последние суммы по продукту.
в общем - чтобы работало и на криво загруженных данных,   нужно внести небольшое изменение:


FirstSortedValue(Aggr(Sum(Сумма), Период, Продукт), -Aggr(if(Сумма>0,Период), Период, Продукт))

тада!

Рейтинг@Mail.ru Яндекс.Метрика