Использование альтернативных состояний – случаи

Рис 1

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

Концепция альтернативных состояний заключается в том, что мы можем создавать «копии» моделей данных внутри приложения QlikView. На эти копии затем можно ссылаться с листа, объекта или выражения. Это как создание параллельных вселенных, мы можем смотреть на каждую вселенную в одном ряду, проводя сравнения. Если разработчик использует эту концепцию эффективно, пользователи могут создавать по-настоящему динамические сравнения в ряд.

Изоляция листа

Есть один вариант использования этой функции, который позволяет изолировать листы друг от друга. Есть случаи (редкие), когда пользователям необходимо выбрать один лист, и не затронуть при этом другие. Мы можем просто создать новое состояние в документе и назначить лист новому состоянию. Все объекты, созданные в этом листе, будут реагировать только на выбор, сделанный в этом состоянии и будет игнорировать выборы в по умолчанию или другие состояния. Перейдите в раздел Настройки -> Свойства документа (Ctrl-Alt-D) -> Общие -> Альтернативный состояния, выберите «Добавить», а затем назовите новое состояние.

Рис 2

Теперь в свойствах листа (Ctrl-Alt-S), раскройте выпадающий список «Альтернативные состояния» и выберите новое состояние.

Рис 3

Любые объекты, созданные в этом листе по умолчанию будут реагировать только на выбор в этом состоянии, тем самым изолируя эту страницу от остальной части Вашего приложения. Это происходит, потому что когда объект создается на листе, ему присваивается <унаследованное> состояние. Это означает, что объект просто примет состояние листа.

Так продолжая рассматривать этот метод, вы, вероятно, захотите создать приложение QlikView с несколькими листами, которые полностью изолированы друг от друга. Просто создайте новое состояние для каждого листа.

Сравнительный анализ

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

Способ 1

Первый пример сравнения «Product Bucket Comparison» на листе можно настроить, выполнив следующие действия:

Создайте два альтернативных состояния в документе «Свойства -> Альтернативные состояния». Для этого примера я назвал свои «Group1» и «Group2». Оставьте лист в состоянии по умолчанию.

Создайте два списка, используя Product_Long как размерность. Первому окну списку будет присвоено состояние Group1, второму – Group2. Обратите внимание, что при выборе в этих позициях, они не отражаются в любом другом объект прямо сейчас, включая позицию текущего выбора. Теперь создайте гистограмму в состоянии по умолчанию без каких-либо размеров. Мы добавим  два выражения:

      Group 1 Products: SUM({<Product_Long=Group1::Product_Long>}ExtendedAmount)
      Group 2 Products: SUM({<Product_Long=Group2::Product_Long>}ExtendedAmount)

Обратите внимание на использование анализа множества в приведенных выше выражениях. Мы ссылаемся на альтернативные состояния в суффиксе модификатора. С точки зрения непрофессионала, мы просим QlikView подвести итоги расширенного количества, с учетом состояния выборов по умолчанию, где Product_Long соответствует выбору для этой области в состоянии Group1. «::» позволяет нам ссылаться и отделить состояние от поля в множестве. Этот объект и выражение до сих пор находятся в состоянии по умолчанию «$» (подразумевается), но теперь будет учитываться выбор для этого поля в других состояниях.

Такой способ гарантирует, что другие выборы на листе будут работать на «глобальной» уровне. Таким образом, мы можем фильтровать до конкретных универсальных критериев, а затем сделаем выбор в списке товаров, чтобы получить наше сравнение.

Рис 4

Способ 2

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

Выполните те же действия, что и описанные выше. Единственное, что будет отличаться в этом примере (кроме имен полей) будет синтаксис в выражениях:

Группа 1

Dates:  SUM({Group3<Category=$::Category,ProductLine=$::ProductLine,Product=$::Product,
[Product Num]=$::[Product Num],SubCategory=$::SubCategory,LastName=$::LastName,
 Gender=$::Gender,City=$::City,State=$::State,Country=$::Country,Occupation=$::Occupation,
 [Home Owner]=$::[Home Owner],NumberCarsOwned=$::NumberCarsOwned,NumberChildrenAtHome=$::NumberChildrenAtHome,
 YearlyIncome=$::YearlyIncome>}ExtendedAmount)

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

Рис 5

Обратите внимание, в прямой таблице мы фактически вычислили дисперсию между двумя наборами в одном выражении. Мы сделали это очень просто с помощью: (column(1)/column(2))-1

Вывод

Сравнивая работу этих двух методов, я считаю, что первый способ проще в большинстве случаев, когда мы делаем какой-нибудь сравнительный анализ. Второй будет лучше, если мы пренебрегаем выбором в состоянии по умолчанию, или если есть учитывается очень мало выборов по умолчанию.

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

Есть, вероятно, другие сценарии использования, о которых я и не думал, и безусловно, гораздо более сложные примеры. Я хотел бы услышать о других примерах использования этой функции. Приятной Вам работы!

 

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

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

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

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

64 queries in 0,418 seconds