Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Декабрь 18, 2017, 06:16:41 am

Автор Тема: QlikView - отобразить последнее значение в каждом месяце  (Прочитано 912 раз)

Оффлайн Vladimir_F

  • Стажер
  • *
  • Сообщений: 2
  • Страна: ru
  • Рейтинг: +3/-0
    • Просмотр профиля
Немного перефразирую (см.картинку 2)

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

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

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

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


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

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

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

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

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

Оффлайн Vladimir_F

  • Стажер
  • *
  • Сообщений: 2
  • Страна: ru
  • Рейтинг: +3/-0
    • Просмотр профиля
Сам спросил - сам ответил.

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

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

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

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


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

тада!