Магия Установочного Анализа – Часть III

Рис. 1

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

Динамические Наборы Записей

Во второй части серии, я написал об общем синтаксисе Набора Выражения и привел несколько примеров, используя Набор Модификаторов с явными определениями значений поля. Наш следующий шаг — это изучение желаемой динамической записи основанной на текущем выборе пользователя, который использует определение неявное значение поля.

Мы используем следующие сценарии:

·         Получить запись предыдущего года, квартала или месяца на основе выборов пользователя. Это, как правило, называют «моментом отчетности».

·         Получить текущий набор записей, определенный пользователем и добавить/удалить конкретные значения с использованием различных операторов.

Момент Отчетности на Основе Выбора Пользователя

Если Вы помните предыдущий пост, Вы можете явно определить запись, которую используют определенные выражения. Например, если Вы хотите получить Продажи за 2008 год, то просто используйте Sum({$<Year = {2008}>} Sales). Но если Вы хотите, чтобы это был предыдущий год, который сможет выбрать сам пользователь? Вместо жесткого кодирования с 2008, мы будем использовать функцию агрегации для определения значения поля, чтобы удовлетворить эту конкретную потребность. Следуйте этим шагам:

    1. Определите функцию, которая будет возвращать нужное значение. В этом случае, мы можем использовать:
  • Max(Year) — 1. Таким образом, если пользователь выбирает 2009, то наша функция будет возвращать 2008. Более того, если пользователь выбирает 2008 и 2009 или не делает выбор вообще, то мы все таки получим значение для предыдущего года на основе последнего возможного года (или максимального числа).
  • Некоторые люди хотели бы использовать функцию Only(Year) — 1 что даст Вам правильный результат, но только если у пользователя ОДНО выбранное значение в поле года и она возвращает ноль для любого другого сценария.

Это решение разработчика и вопрос конкретных требований приложения — какую функцию использовать.

1. Далее, поскольку мы знаем наверняка, что значение выражение возвращается, и протестировали его на различных выборах, мы можем использовать его как модификатор в конечном выражении. То, как мы разместили функцию в виде Набора Модификаций выглядит следующим образом:

— $(=Function()). Насколько Вы можете видеть, это просто, как в случае с переменной (предыдущий пост из этой Серии), но со знаком равенства.

Таким образом, конечное выражение должно выглядеть следующим образом:

— Sum({$<Year = {$(=Max(Year) – 1))}>} Sales

2.    То же самое работает с кварталами, месяцами, днями и т.д. Но, если Вы хотите использовать это в течение нескольких месяцев, Вы не можете ожидать, Max(Month) — 1 для работы на каждый месяц. Какое значение вернется, когда пользователь выберет январь? Он вернется к нулю, но это не то, что нам надо. Хотя Вы можете легко создать выражение, которое возвращает число 12, вместо ноля, в следующем посте я опишу еще более простое решение для этой затруднительной ситуации.

Добавить/Удалить Значение для уже Выбранного Набора Записей

Мы использовали Установочные выражения, чтобы определить новый выбор, не обращая внимания на то, что уже выбрал пользователь. Тем не менее, в некоторых случаях мы должны изменить набор записей, указанный пользователем при добавлении или удалении определенных значений. Чтобы сделать это, мы должны использовать другой оператор присваивания. Вот различные операторы присваивания:

  1. «=» — Это значение, которое мы использовали и которое просто повторно определяет выбор для поля.
  2. «+ =» — Этот оператор неявно определяет союз между выбранными значениями полей и те, которые мы определяем потом.
  3. «- =» — Этот оператор неявно определяет исключение из значений, котрые мы указываем из значений выбранных пользователем.
  4. «* =» — Этот оператор используется для определения набора записей, основанных на пересечении между тем, что пользователь выбрал и значениями, которые мы указываем. То есть, в результате набор записей будут состоять из значений, которые «пересекаются» или присутствуют в обоих выборах пользователя И значения, которые мы указываем в Установочном Наборе.
  5. «/ =» — Это значение используется для определения симметричной разницы (XOR), в результате набор записей будет содержать значения, которые присутствуют в одном наборе, но не в другом.

Давайте рассмотрим некоторые примеры, чтобы лучше понять это.

  • Sum({$<Year += {2007, 2008}>} Sales) Это выражение вернет продажи за годы, отобранные пользователем И годы 2007, 2008.
  • Sum({$<Product -= {‘Product X’}>} Sales) Это выражение вернет продажи для продуктов, отобранных пользователем включая Товары Х.
  • Sum({$<Product *= {‘Product X’}>} Sales) возвращает продажи для текущего выбора, но только для пересечения выбранных продуктов и Продукта X.
  • Sum({$<ProductNumber *= {“48*”}>} Sales) возвращает продажи для текущего выбора, но только для пересечения выбранных продуктов и всех продуктов, номер которых которых начинается с 48.

Теперь, когда вы видели обе темы, Вы можете начать объединение обоих в наборе выражений. Опции, которые есть у Вас в распоряжении, не ограничены.

Я надеюсь, что этот пост показался Вам полезным. Если это так то, пожалуйста, поделитесь ним с остальными людьми. Кроме того, Вы можете записать свои комментарии в форме ниже!

 

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

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

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

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

64 queries in 0,203 seconds
Website nonton bokep jepang