Привет, друзья!
Сегодня хочу вам рассказать об альтернативных состояниях (Alternate States) в QlikView, которые очень полезны при сравнении данных – они помогут заложить в ваших приложениях дополнительный важный контекст.
Альтернативные состояния: настройка в документе
По умолчанию, пользовательские выборки в QlikView находятся в активном состоянии, что обозначается как $. Альтернативные состояния позволяют расширить функционал выборок. Это означает, что мы можем отображать несколько наборов выборок в одном представлении.
НА ЗАМЕТКУ! Чтобы включить и настроить альтернативные состояния:
- Вкладка Свойства документа -> Общие -> Другие состояния.Откроется диалоговое окно Другие состояния (CTRL+ALT+D).
- Нажмите кнопку Добавить…, чтобы создать несколько состояний, и укажите их имя. Эти имена будут называться идентификаторами состояния.
- Чтобы закрыть диалоговое окно, нажмите ОК.
Итак, после этих небольших манипуляций в настройках объекта появляется дополнительное поле, которое определяет альтернативное состояние объекта. По умолчанию стоит настройка «наследования параметров» (inherited).
Альтернативные состояния: Разбор примера
[wpdm_package id=’9644′]
Итак, сегодня мы будем изучать работу альтернативных состояний на примере приложения выше.
Заходим во вкладку TPL 2 в приложении. Пока она пустая, но мы это исправим. Для начала создадим листбоксы с фильтрами для сравнения данных, как на скриншоте ниже:
Для этого выполним следующее:
- Добавить листбоксы (в левой части экрана) для выбора наших текущих сравненийa. Листбокс по году настроен с прозрачным зеленым фоном на 50%
b. Листбоксы по Индустрии и Названию завода имеют зеленый заголовок ‘cGreen‘
- Добавить альтернативные состояния в документ
- Включаем альтернативные состояния в параметрах документа (см.выше) и нажимаем добавить
- Добавляемую группу назовем “Group2”
- Применяем все настройки и нажимаем ‘Ok’
- Привязываем альтернативные состояния к листбоксам
Листбоксы в левой части будет иметь альтернативные состояния, чтобы проводить сравнение текущей выборки с любым другим годом, индустией или заводом, поэтому делаем следующее:
- Создаем, а лучше просто копируем, все 3 листбокса в правую часть экрана
- Назначаем каждому из трех листбоксов в Свойствах объекта альтернативное состояние‘Group 2’
Мы используем для сравнения анализ множеств (Set Analysis) таким выражением:
sum({Group2} SalesPrice*Quantity)
Это выражение считает доход для выборок в листбоксах.
- Разработка визуализации
Далее мы создаем визуализацию сравнений для наших списков – добавляем новый график:
- В контекстном меню – новый объект листа – диаграмма – линейная диаграмма
- Кликаем далее
- Добавляем измерение
Измерение, которые мы собираемся сравнивать – продуктовая группа. Добавляем это поле и сохраняем.
- Добавляем нужные выражения
Нам нужно два выражения – одно для результатов по текущей выборке и другое – для сравнения этих результатов:
a) Добавляем выражение для сравнений:(Ярлык: CompareTo)
1 2 3 |
(sum({Group2}SalesPrice*Quantity)-sum({Group2}(CostPrice)*Quantity) –sum({Group2}(SalesPrice*Quantity)*FixedCostFactor)) /sum({Group2}SalesPrice*Quantity) |
b) Добавляем выражение для текущей выборке:(Net Margin %)
1 2 3 |
(sum(SalesPrice*Quantity)-sum((CostPrice)*Quantity) –sum((SalesPrice*Quantity)*FixedCostFactor)) /sum(SalesPrice*Quantity) |
c) Размер и положение объекта во вкладке Заголовок:
a. X-pos: 211
b. Y-pos: 13
c. Width: 576
d. Height: 613
d) Применяем настройки и жмем ‘Ok’
7. Пока у нас получился такой график, но нам, конечно, нужно его улучшить:
- Информационный дизайн диаграммы
a) Для лучшего восприятия диаграммы сделаем следующее:
b) Уберем заголовок
c) Уберем границы
d) Установим размер шрифта для осей на 8 pt
e) Выберем вертикальное отображение подписей данных
f) Скрываем легенду
g) Убираем заголовок объекта
h) Вместо отображения линиями назначим отображение точками (Dots) по 6 pt
И получим уже такую визуализацию:
Заключительные штрихи: от хорошего к лучшему
Уже очень неплохо получилось, но я предлагаю окончательно докрутить эту сравнительную диаграмму, чтобы она стала BI-шедевром 🙂
- Добавим дизайна
a. Установим цвет фона для выражения ‘CompareTo’ на ‘cBlue‘. Это поможет пользователю понять, какие точки, к какой выборке относятся
b. Выберем фон для выражения ‘Net Margin %’ на‘cGreen‘.
c. Добавляем индикатор для текущей выборки:
– Добавляем текстовый объект▲, размером 110 pt и установим прозрачность объекта на 100%
– Настройки параметров Заголовка:
– X-pos:32
– Y-pos: 368
– Width: 144
– Height: 144
d. Добавляем рассчитываемый цвет шрифта для индикации лучших результатов:
1 2 3 4 5 6 7 8 |
if((sum({Group2}SalesPrice*Quantity)-sum({Group2}(CostPrice)*Quantity)- sum({Group2}(SalesPrice*Quantity)*FixedCostFactor))/sum({Group2}SalesPrice*Quantity) < (sum(SalesPrice*Quantity)-sum((CostPrice)*Quantity)- sum((SalesPrice*Quantity)*FixedCostFactor))/sum(SalesPrice*Quantity) , cGreen , argb(100,240,240,240) ) |
e. Добавляем индикатор для выборке ‘Group2’ , который показывает, выше ли полученные значения
Добавляем текстовый объект «▲» с размером шрифта 110 pt и устанавливаем прозрачность объекта на 100%.
Настройки параметров Заголовка объекта:
– X-pos: 825
– Y-pos: 368
– Width: 144
– Height: 144
f. Добавляем выражение для вычисления цвета для индикации лучших результатов:
1 2 3 4 5 6 7 8 |
if((sum({Group2}SalesPrice*Quantity)-sum({Group2}(CostPrice)*Quantity)- sum({Group2}(SalesPrice*Quantity)*FixedCostFactor))/sum({Group2}SalesPrice*Quantity) > (sum(SalesPrice*Quantity)-sum((CostPrice)*Quantity)- sum((SalesPrice*Quantity)*FixedCostFactor))/sum(SalesPrice*Quantity) , cBlue , argb(100,240,240,240) ) |
- Добавляем средние линии и линии лучших результатов
a. Добавляем дополнительную линию (‘Net Margin %’)
– Выражение для линии:
1 2 |
(sum(SalesPrice*Quantity)-sum((CostPrice)*Quantity)- sum((SalesPrice*Quantity)*FixedCostFactor))/sum(SalesPrice*Quantity) |
– Выражение для ярлыка:
1 2 3 |
=num((sum(SalesPrice*Quantity)-sum((CostPrice)*Quantity)- sum((SalesPrice*Quantity)*FixedCostFactor))/sum(SalesPrice*Quantity) , ‘0%’) |
– Проверьте, что галочка на показ ярлыка установлена
– Вычисляемый цвет для этой линии должен быть ‘cGreen‘
b. Дополнительная линия для ‘Group2’ (‘CompareTo’)
– Выражение для линии:
1 2 3 |
(sum({Group2}SalesPrice*Quantity)-sum({Group2}(CostPrice)*Quantity) –sum({Group2}(SalesPrice*Quantity)*FixedCostFactor)) /sum({Group2}SalesPrice*Quantity) |
– The expression for the label should be:
1 2 3 4 |
=’ ‘&num((sum({Group2}SalesPrice*Quantity)-sum({Group2}(CostPrice)*Quantity) –sum({Group2}(SalesPrice*Quantity)*FixedCostFactor)) /sum({Group2}SalesPrice*Quantity) , ‘0%’) |
– Проверьте, что галочка на показ ярлыка установлена
– Вычисляемый цвет для этой линии должен быть ‘cBlue‘
- Добавляем линии сетки
Чтобы было удобнее работать с диаграммой, во вкладке Оси выбираем – Показывать сетку, а цвет ставим на ‘cLightGrey ‘.
- Сохраняем и жмем «Ок».
В итоге вот, что у нас получится!
Расскажите, а используете ли вы в работе альтернативные состояния и как?
Не смог найти как сделать подписи данных вертикально.. Инет тоже не особо помог..
Также я не понял как присваивать цвета из переменной.
Сделать подписи данных вертикально можно следующим образом:
Свойства диаграммы-> Вкладка «Представление» -> Поле «Значения на точках графика» -> Поставить флажок «Вертикально«