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

Автор Тема: Расчет динамики  (Прочитано 2251 раз)

Оффлайн Ирина

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +5/-0
    • Просмотр профиля
Расчет динамики
« : Январь 26, 2015, 04:56:51 pm »
Данная тема косвенно затрагивалась здесь, но ответа я так и не нашла.

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

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

Как это реализовать в QlikView? Как лучше всего работать с датами, как задавать предыдущие недели, месяца, года относительно выбранных?

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1005
  • Страна: ru
  • Рейтинг: +103/-0
    • Просмотр профиля
Re: Расчет динамики
« Ответ #1 : Январь 27, 2015, 02:45:27 pm »
Добрый день.
Вот Вы и добрались до анализа множеств.
Рекомендую почитать на эту тему в официальной документации по 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))

Оффлайн Ирина

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +5/-0
    • Просмотр профиля
Re: Расчет динамики
« Ответ #2 : Январь 28, 2015, 09:58:15 am »
Спасибо за Ваши варианты, буду осваивать =)
Не подскажите, где можно ознакомиться с перечнем функций дат и времени?

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

Re: Расчет динамики
« Ответ #2 : Январь 28, 2015, 09:58:15 am »

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1005
  • Страна: ru
  • Рейтинг: +103/-0
    • Просмотр профиля
Re: Расчет динамики
« Ответ #3 : Январь 28, 2015, 12:38:53 pm »
Описание всех функций доступно во встроенной справке Qlikview по F1, в строке поиска наберите "Функции даты".
Очень много информации в Справочном руководстве по Qlikview в формате PDF. Также поиском "Функции даты).
В интернете также присутствует эта информация в справке по QLIK SENSE