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

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: Vippo от 23 ноября 2018, 10:57:53

Название: Сравнение периодов L4L в комбинации с фильтрами
Отправлено: Vippo от 23 ноября 2018, 10:57:53
Доброго времени суток!
Пытаюсь разобраться с работой во временных диапазонах, получилось сделать сравнение периодов но именно 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 то все опять же считает корректно.
Может так и должно быть и мне нужен в принципе другой подход для моей задачи?
Название: Re: Сравнение периодов L4L в комбинации с фильтрами
Отправлено: admin от 23 ноября 2018, 01:36:20
Привет.
Тогда придется писать длинные выражения отталкиваясь от максимальной даты выборки, не используя флаговые поля.
Для начала просто составьте выражения для расчета границы дат по выборкам.
После отладки можно будет перенести в выражения множеств.
Название: Re: Сравнение периодов L4L в комбинации с фильтрами
Отправлено: Vippo от 23 ноября 2018, 03:29:26
Спасибо!
Может еще какие идеи будут. Пишите, друзья, буду признателен!
Название: Re: Сравнение периодов L4L в комбинации с фильтрами
Отправлено: admin от 24 ноября 2018, 10:08:29
Нет.
Тут без вариантов.
Пример выражения:

Sum({<[
Дата={">=$(=
date(WeekStart(MonthStart(max(Дата)),-52*2)+WeekDay(MonthStart(max(Дата))))
)
<=$(=
date(WeekStart((max(Дата)-Match(max(Дата),max(Дата))),-52*2)
+WeekDay((max(Дата)-Match(max(Дата),max(Дата)))))
)
"}>}  [Сумма Выручки])
Название: Re: Сравнение периодов L4L в комбинации с фильтрами
Отправлено: Vippo от 29 ноября 2018, 04:07:18
А тут точно все правильно написано? Не воспринимает скрипт в таком виде, что то со скобками видимо не сходится...
Название: Re: Сравнение периодов L4L в комбинации с фильтрами
Отправлено: admin от 29 ноября 2018, 04:57:56
Хм, я убрал лишнее, может зацепил скобки.
Это код для примера, понять механизм формирования интервалов в выражении фильтра анализа множеств.
Название: Re: Сравнение периодов L4L в комбинации с фильтрами
Отправлено: admin от 04 декабря 2018, 09:46:36
https://community.qlik.com/t5/QlikView-Documents/YTQ-QTD-MTD-and-WTD/ta-p/1489245