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

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: Ирина от 26 января 2015, 04:56:51

Название: Расчет динамики
Отправлено: Ирина от 26 января 2015, 04:56:51
Данная тема косвенно затрагивалась здесь, но ответа я так и не нашла.

Допустим есть следующие данные по продажам:
                  янв         фев          мар
Товар1  10000р.   12000р.   15000р.
Товар2    5000         4000        5000

Необходимо рассчитать динамику продаж по каждому товару в марте, относительно февраля и января, т.е.:
             мар-фев   мар-янв
Товар1    3000        5000
Товар2    1000           0

Как это реализовать в QlikView? Как лучше всего работать с датами, как задавать предыдущие недели, месяца, года относительно выбранных?
Название: Re: Расчет динамики
Отправлено: admin от 27 января 2015, 02:45:27
Добрый день.
Вот Вы и добрались до анализа множеств.
Рекомендую почитать на эту тему в официальной документации по Qlikview и по Sense на сайте help.qlik.com

Вариантов решения может быть несколько, в зависимости от задачи.
Можно задать интервал дат:
Sum({1<[Date] = {">=01.02.2014<=28.02.2014"}>} Количество)
Если используется календарь, то можно задать и так:
Sum({1<[_MonthSerial]={'2'},[Year]={'2014'}>} Количество)
Т.е. вычислить разницу между месяцами можно так:

Sum({1<[_MonthSerial]={'3'},[Year]={'2014'}>} Количество)-Sum({1<[_MonthSerial]={'1'},[Year]={'2014'}>} Количество)

или так:

Sum({1<[YearMonth] = {'201403'}>} Количество)-Sum({1<[YearMonth] = {'201401'}>} Количество)

Или так:

Sum({1<[Date] = {">=01.03.2014<=31.03.2014"}>} Количество)-Sum({1<[Date] = {">=01.01.2014<=31.01.2014"}>} Количество)

Но эти выражения заданы с явным указанием дат, и не реагируют на выборки в приложении.
Следовательно, в выражение надо внести изменения, вычисления необходимых параметров в зависимости от выборки, например:
Sum({<[Date] = {">=$(=MonthStart(AddMonths(Max([Date]),-1)))<=$(=monthend(AddMonths(Max([Date]),-1)))"} >} Количество)
при текущем выборе дат марта 2014, даст период - ">=01.02.2014<=28.02.2014"

Рекомендую также ознакомиться с перечнем функций дат и времени.

Если требуется отслеживать, к примеру последние периоды от даты обновления данных, можно формировать флаги в календаре. Тогда условие для фильтра будет проще, например LastMonth={'-2'},и т.п. Все сводится к заданию условия фильтров.

Отладку условий рекомендую производить в текстовом объекте, задав условие в выражении для текста, например:
=MonthStart(AddMonths(Max([Date]),-1))
Название: Re: Расчет динамики
Отправлено: Ирина от 28 января 2015, 09:58:15
Спасибо за Ваши варианты, буду осваивать =)
Не подскажите, где можно ознакомиться с перечнем функций дат и времени?
Название: Re: Расчет динамики
Отправлено: admin от 28 января 2015, 12:38:53
Описание всех функций доступно во встроенной справке Qlikview по F1, в строке поиска наберите "Функции даты".
Очень много информации в Справочном руководстве по Qlikview в формате PDF. Также поиском "Функции даты).
В интернете также присутствует эта информация в справке по QLIK SENSE (http://help.qlik.com/sense/ru-RU/online/#../Subsystems/WorkingWith/Content/Scripting/DateAndTimeFunctions/DateAndTimeFunctions.htm%3FTocPath%3D%25D0%25A0%25D0%25B0%25D0%25B1%25D0%25BE%25D1%2582%25D0%25B0%2520%25D1%2581%2520Qlik%2520Sense%7C%25D0%25A1%25D0%25B8%25D0%25BD%25D1%2582%25D0%25B0%25D0%25BA%25D1%2581%25D0%25B8%25D1%2581%2520%25D1%2581%25D0%25BA%25D1%2580%25D0%25B8%25D0%25BF%25D1%2582%25D0%25B0%2520%25D0%25B8%2520%25D1%2584%25D1%2583%25D0%25BD%25D0%25BA%25D1%2586%25D0%25B8%25D0%25B8%2520%25D0%25B4%25D0%25B8%25D0%25B0%25D0%25B3%25D1%2580%25D0%25B0%25D0%25BC%25D0%25BC%25D1%258B%7C%25D0%25A4%25D1%2583%25D0%25BD%25D0%25BA%25D1%2586%25D0%25B8%25D0%25B8%2520%25D0%25B2%2520%25D1%2581%25D0%25BA%25D1%2580%25D0%25B8%25D0%25BF%25D1%2582%25D0%25B0%25D1%2585%2520%25D0%25B8%2520%25D0%25B2%25D1%258B%25D1%2580%25D0%25B0%25D0%25B6%25D0%25B5%25D0%25BD%25D0%25B8%25D1%258F%25D1%2585%2520%25D0%25B4%25D0%25B8%25D0%25B0%25D0%25B3%25D1%2580%25D0%25B0%25D0%25BC%25D0%25BC%25D1%258B%7C%25D0%25A4%25D1%2583%25D0%25BD%25D0%25BA%25D1%2586%25D0%25B8%25D0%25B8%2520%25D0%25B4%25D0%25B0%25D1%2582%25D1%258B%2520%25D0%25B8%2520%25D0%25B2%25D1%2580%25D0%25B5%25D0%25BC%25D0%25B5%25D0%25BD%25D0%25B8%7C_____0)