Одна только цифра не расскажет вам много — Вы должны ее с чем-то сравнить. Очень часто Вам нужно сравнить цифру этого года с показателями прошлого.
Это называется Ежегодное сравнение (YoY).
При таком сравнении, можно, например, сравнить продажи в текущем месяце с продажами за этот же месяц в прошлом году. Или если Вы хотите избежать колебаний из-за более или мене удачных месяцев, то можете посмотреть накопленные продажи в текущем году по сравнению с аналогичным периодом прошлого года. Нужно посмотреть показатель Год-Дата (YTD).
Но как его вычислить? Как написать простую формулу, чтобы выбрать подмножество операций с прошлого года и сравнить их с соответствующими трансакциями в текущем году?
Если у Вас есть Месяц, как измерение и показать накопленных чисел в графике, то Вам не нужно ничего делать. Цифры сопоставимы сами по себе.
Однако, если Вы не используете Месяц в качестве измерения, то число не будет сопоставимо с прошлогодним и будет отображать транзакции за более длительный период. Вы все еще можете сравненивать, но с другим первым измерением и Годом, в качестве второго.
Есть несколько способов сделать это и они отличаются тем, как определяется исходная дата. Одним из таких способов является предоставление пользователю права определять произвольную исходнкю дату — либо путем выбора, либо через переменную — а затем использовать это выражение для расширенный Анализа Набора.
Другой, гораздо более простой способ — это использовать дату запуска сценария в качестве исходной даты. Если Ваше приложение обновляется каждую ночь, это будет означать, что расчет Год-Дата всегда вверху, до сегодняшней даты.
Вот как это делается:
В Мастер Календаре Вам нужно будет определить флаги — Булевское поле — которые определяют, должен ли конкретная дата быть включена в расчет:
If( DayNumberOfYear(Date) <= DayNumberOfYear(Today()), 1, 0 ) as IsInYTD,
Вышеуказанная формула проверяет, находится ли дата перед сегодняшней или нет. Обратите внимание, что этот флаг будет полезен также для дат, относящихся к другим годам, не только к текущему. Значение флага будет составлять 1 для дат в начале года, независимо от того, какой это год.
Затем Вы можете использовать этот флаг в простом выражении Set Analysis:
Sum( {$<IsInYTD={1}>} Amount )
Выражение Set Analysis выберет правильные даты и таким образом правильные транзакции для сравнения. Кроме того, это выражение может быть объединено с любым измерением.
Флаги для ряда различных периодов времени могут быть созданы вот так, не только по схеме Год-Дата, но также Квартал-Дата, Месяц-Дата, Текущий месяц, Прошлый месяц и т.д.
If( DayNumberOfQuarter(Date) <= DayNumberOfQuarter(Today()), 1, 0) as IsInQTD,
If( Day(Date) <= Day(Today()), 1, 0) as IsInMTD,
If( Month(Date) = Month(Today()), 1, 0) as IsCurrentMonth,
If( Month(AddMonths(Date,1)) = Month(Today()), 1, 0) as IsLastMonth,
Краткое изложение: Создайте необходимые флаги в Мастер Календаре. Это значительно упростит выражения Set Analysis.
Найти решение у бизнес-партнера QlikTech (QlikView) в России.
Форум разработчиков QlikView и Qlik Sense. Получите ответы на все вопросы по QlikView и Qlik Sense!