Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Декабрь 12, 2018, 09:24:42 am

Автор Тема: Сравнение периодов L4L в комбинации с фильтрами  (Прочитано 472 раз)

Онлайн Vippo

  • Новичок
  • *
  • Сообщений: 3
  • Страна: ru
  • Рейтинг: +1/-0
    • Просмотр профиля
Доброго времени суток!
Пытаюсь разобраться с работой во временных диапазонах, получилось сделать сравнение периодов но именно YTD (то есть за год и по текущую дату) текущего года и год назад., По аналогии можно продолжить далее и 2 и 3 года назад с помощью сочетания
Дата.autoCalendar.InYTD и Дата.autoCalendar.YearsAgo. Эта история работает до тех пор, пока не начинаешь использовать фильтры по годам. То есть по кварталам, месяцам и тд, все хорошо работает, как только в фильтрах ставишь ограничения по году, то перестает считаться тот или иной период, в зависимости от выбора.

По факту мне нужен более сложный механизм, чтобы в таблице не плодить столбцы на каждый год и их сравнение в процентном и абсолютном выражениях, а
например вот так

[Подразделение] *** [Продажи текущий период] *** [Продажи прошлый период] *** [дельта%]

и чтобы при выборе в фильтре 2018 года он показывал YTD 2018, а в прошлом периоде YTD 2017, соответственно, если я фильтром ставлю значение 2017, чтоб в таблице данные подставлялись в текущем периоде 2017, а в прошлом 2016 и тд. То есть нужно, чтоб система понимала текущий период основываясь на выбранный в фильтре.

В качестве примера напишу часть кода
//Продажи YTD за 2018 год
Sum( { $< [Дата.autoCalendar.InYTD]={1} ,[Дата.autoCalendar.YearsAgo]={0}, [Проведен] = {01}, [ВидОперации]={0} > } [Сумма] )

//Продажи YTD за 2017 год
Sum( { $< [Дата.autoCalendar.InYTD]={1} ,[Дата.autoCalendar.YearsAgo]={1}, [Проведен] = {01}, [ВидОперации]={0} > } [Сумма] )

Отличается по сути выборкой {1}  в [Дата.autoCalendar.YearsAgo] (типа 1 год назад и по текущую дату).
Все работает, пока не сделаешь ограничение фильтром год. Хотя при этом если в фильтре выбрать 2018 и 2017 то все опять же считает корректно.
Может так и должно быть и мне нужен в принципе другой подход для моей задачи?

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1236
  • Страна: ru
  • Рейтинг: +133/-0
    • Просмотр профиля
Привет.
Тогда придется писать длинные выражения отталкиваясь от максимальной даты выборки, не используя флаговые поля.
Для начала просто составьте выражения для расчета границы дат по выборкам.
После отладки можно будет перенести в выражения множеств.

Онлайн Vippo

  • Новичок
  • *
  • Сообщений: 3
  • Страна: ru
  • Рейтинг: +1/-0
    • Просмотр профиля
Спасибо!
Может еще какие идеи будут. Пишите, друзья, буду признателен!

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


Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1236
  • Страна: ru
  • Рейтинг: +133/-0
    • Просмотр профиля
Нет.
Тут без вариантов.
Пример выражения:
Sum({<[
Дата={">=$(=
date(WeekStart(MonthStart(max(Дата)),-52*2)+WeekDay(MonthStart(max(Дата))))
)
<=$(=
date(WeekStart((max(Дата)-Match(max(Дата),max(Дата))),-52*2)
+WeekDay((max(Дата)-Match(max(Дата),max(Дата)))))
)
"}>}  [Сумма Выручки])

Онлайн Vippo

  • Новичок
  • *
  • Сообщений: 3
  • Страна: ru
  • Рейтинг: +1/-0
    • Просмотр профиля
А тут точно все правильно написано? Не воспринимает скрипт в таком виде, что то со скобками видимо не сходится...

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1236
  • Страна: ru
  • Рейтинг: +133/-0
    • Просмотр профиля
Хм, я убрал лишнее, может зацепил скобки.
Это код для примера, понять механизм формирования интервалов в выражении фильтра анализа множеств.

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1236
  • Страна: ru
  • Рейтинг: +133/-0
    • Просмотр профиля

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

Re: Сравнение периодов L4L в комбинации с фильтрами
« Ответ #6 : Декабрь 04, 2018, 09:46:36 am »