Магия Установочного Анализа — Момент Отчетности

Рис. 1

Обновление 2014/24/03: Мы запустили Online Training Center, место, где пользователи QlikView, разработчики и энтузиасты могут поделиться и узнать о новых качественных курсах QlikView. Один из курсов посвящен теме Set Analysis. Если Вы хотите узнать больше о том, как использовать эту мощную функцию, то, пожалуйста, просмотрите описание курса здесь и присоединитесь во время одной из наших будущих интерактивных сессий!

Момент Отчетности

Я всегда считал, что смысл установочного анализа — это удовлетворить основные потребности в инструмент бизнес-аналитики: способность выполнять анализ «Момента отчетности». Но, разумеется, это также очень полезно для удовлетворения многих других потребностей. В этом посте я расскажу о специфике Момента Отчетности в Установочном Анализе.

Обновление 2012/13/12: Барри Хармсен и я только что выпустили книгу QlikView 11 for Developers. Она не бесплатна, но цена очень бюджетна, отличный способ узнать больше о QlikView и содержит целую главу об Установочном Анализе. Больше информации здесь.

Шаг за Шагом
Мы уже рассматривали Синатксис Установочного Анализа и концепцию динамического набора записей. Так что теперь, мы будем объединять полученные знания, чтобы создать реалистичное приложение для Установочного анализа.
Скажем, пользователь имеет следующий Выбор: Год = 2010; Квартал = Q4; Месяц = ноябрь. Пользователь анализирует продажи и должен сравнить этот период с предыдущим месяцем (с октябрем, в данном случае). Как же мы это сделаем? Это просто. Основная идея заставить QlikView назначить новое значение в поле Месяца. Помните, как мы делали это в предыдущем посте?

Определить значение для присваивания

Мы можем использовать функцию агрегации для определения значения, например, мы хотим назначить поле Месяца: Max(Month) — 1. В зависимости от того, как Вы генерируете поле Месяца, это может дать Вам правильный результат (10, для октября). Но если нет числового представления, то это просто буквальное значение и оно вернется к нолю.
Тем не менее, даже если это приводит к числовому значению, Вы не сможете назначить это значение в поле Месяц, потому что оно не существует, мы должны назначить точное значение, которое существует в нашей таблице в соответствующем поле («октябрь»как буквальное значение в поле Месяц). Таким образом, наш подход будет иметь еще одно поле с названием [Month (#)] , который будет содержать числовое представление поля Месяц. Таким образом, мы можем присвоить результат выражения Max([Month (#)]) – 1 полю [Month (#)].

Выражение preliminar
Установленное выражение назначит полученное значение в поле [Month (#)]:

{$<[Month (#)] = {$(=Max([Month (#)]) – 1)}>}. (Посмотрите здесь если у Вас проблемы с пониманием синтаксиса).

Следующим шагом будет использование Установленного выражения с функцией Агрегирования:

Sum({$<[Month (#)] = {$(=Max([Month (#)]) – 1)}>} Sales)

Но есть проблема! Это выражение вернется к нолю, поскольку значение, которое мы пытаемся извлечь, фактически исключено текущим выбором для пользователя: Пользователь специально выбрал ноябрь, тем самым уменьшая набор записей, сводя его к записям, связанным с этим значением. Как же мы получаем значение, которое сейчас исключено?

Несколько корректировок
Ответ: игнорируйте выбор пользователя для этого конкретного поля. Это достигается путем присвоения пустого значения полю в нашем наборе выражений:

{$<[Month (#)] = {$(=Max([Month (#)]) – 1)}, Month = >}

Сначала мы получим набор записи для всех доступных месяцев, если они не будут исключены другим выбором поля, а затем присвоим значение, которое хотим (10) в указанном поле ([Month (#)]), поэтому возвращение в конечную запись установлено только для октября. Порядок заданий в полях в нашем Наборе Выражений не важен. Наша конечное выражение:

Sum({$<[Month (#)] = {$(=Max([Month (#)]) – 1)}, Month = >} Sales)

Другой пример
Легко, правда? Отлично! Теперь, давайте представим, что Состояние пользователя это: Год = 2010 год; Квартал = Q4; Месяц = октябрь. Вернет ли это выражение продажи за сентябрь? Ответ — Нет. Можете ли Вы догадаться, почему?

Верно! Потому что месяц, который нам нужен, не только исключается из выбора поля за Месяц, но из выбора Поля за Квартал. Таким образом, наше выражение должно быть:

Sum({$<[Month (#)] = {$(=Max([Month (#)]) – 1)}, Quarter = , Month = >} Sales)

Еще одно неудобство в приведенном Выше выражении

При разработке приложения, Вы должны учесть все альтернативные выборы для конечного пользователя. Так что теперь, давайте предположим, что состояние выбор выглядит следующим образом: Год = 2010; Месяц = январь; (Ничего не выбрано в поле квартала, но можно предположить, что единственное возможное значение (Q1).

Если мы хотим продажи за предыдущий месяц (Декабрь, 2009), нам необходимо:

1. Игнорируйте категории Год и Месяц.

2. Создайте выражение, которое работает так же, как и предыдущее, но с которым мы можем получить номер 12 (в декабре), когда наш выбор — январь. (Предыдущее выражение (Max([Month (#)] – 1)) возвращается к нолю в этом сценарии и это не полезно.

3. Создайте выражение, которое возвращает значение за предыдущий Год. Простая задача.

Прямой подход будет состоять в следующих шагах — создать Выражение Если: If((Max([Month (#)]) – 1) = 0, 12, Max([Month (#)] – 1)). Но я нахожу это очень непрактичным, так что здесь стоит использовать другой подход:

• В сценарии, назначьте порядковый номер для каждого месяца, уникальный идентификатор, с которым Вам будет легко играть. Я использую следующую формулу:

(Year(Date) – 1)  * 12 + Num(Month(Date))

Приведенная выше формула будет, присваивает значение 24120 декабрю 2009 года и 24121 январю 2010 года, и так далее. Кроме того, поскольку эти цифры 5-значные, Вы можете легко найти более удобный способ для запоминания, присвоив уникальный идентификатор каждому месяцу, используя ту же концепцию. Наш друг Барри с qlikfix.com, рекомендует использовать функцию AutoNumber. Я поддерживаю его, но только если Ваша календарная таблица загружается в порядке возрастания, основываясь на дне.

Теперь, когда у нас есть порядковый номер для месяца (назовем его MonthID), мы можем использовать это выражение для извлечения значения за предыдущий MonthID, который будет работать для каждого сценария: Max(MonthID) – 1

Конечное выражение
Наше конечное выражение будет выглядеть вот так:

Sum({$<MonthID = {$(=Max(MonthID) – 1)}, Year = , Quarter = , Month = >} Sales)

Обратите внимание, что я игнорирую Выбор, основанный на категории Года, Квартала и Месяца. То же самое используется и в MonthID для поля квартала. Мы можем легко и плавно создать много выражений для Момента Отчетности, после того как мы создали таблицу-календарь со следующими полями: дата, год, месяц, квартал, MonthID и QuarterID.
Больше примеров
Теперь, давайте посмотрим на общие выражения Установочного Анализа, которые мы можем использовать, когда требуется:

YTD (Year-To-Date) Sales:
Sum({$<MonthID = {“<=$(=Max(MonthID))”},
 Year = {$(=Max(Year))},
 Quarter = ,
 Month = >} Sales)
QTD  (Quarter-To-Date) Sales:
Sum({$<MonthID = {“<=$(=Max(MonthID))”},
 QuarterID = {$(=Max(QuarterID))},
 Year = ,
 Quarter = ,
 Month = >} Sales)
MTD (Month-To-Date) Sales:
Sum({$<MonthID = {$(=Max(MonthID))},
 Year = ,
 Quarter = ,
 Month = >} Sales)
Previous Month Sales:
Sum({$<MonthID = {$(=Max(MonthID) – 1)},
 Year = ,
 Quarter = ,
 Month = >} Sales)
Previous Quarter Sales:
Sum({$<QuarterID = {$(=Max(QuarterID) – 1)},
 Year = ,
 Quarter = ,
 Month = >} Sales)
Sales for the same Month but Previous Year:
Sum({$<MonthID = {$(=Max(MonthID) – 12)},
 Year = ,
 Quarter = ,
 Month = >} Sales)
Sales for same Quarter of the Previous Year:
Sum({$<QuarterID = {$(=Max(QuarterID) – 4)},
 Year = ,
 Quarter = ,
 Month = >} Sales)
YTD Sales for Previous Year
Sum({$<MonthID = {“<=$(=Max(MonthID) – 12)”},
 Year = {$(=Max(Year) – 1)},
 Quarter = ,
 Month = >} Sales)
Sales for Rolling 12 Months:
Sum({$<MonthID = {“>=$(=Max(MonthID) – 11)<=$(=Max(MonthID))”},
 Year = ,
 Quarter = ,
 Month = >} Sales)

Итак у Вас есть, полный набор формул, чтобы помочь Вам создать Точку Анализа в Приложениях QlikView очень простым способом.

Я надеюсь, что Вы воспользовались Частью IV Серии «Магия Установочного Анализа». Следующее пост: Создайте свое Выражение в Моменте Отчетности, один раз и используйте его повторно в каждой новом приложении QlikView.

Как всегда, комментарии и отзывы приветствуются.

 

Найти решение у бизнес-партнера QlikTech (QlikView) в России.

Форум разработчиков QlikView и Qlik Sense. Получите ответы на все вопросы по QlikView и Qlik Sense!

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий

64 queries in 0,189 seconds
Website nonton bokep jepang