Примеры использования переменной в выражении
Переменная в Qlik Sense представляет собой именованный элемент, содержащий значение данных. Если переменная используется в выражении, она замещается его значением или описанием переменной.
Способы использования переменных в выражении
Переменная может использоваться двумя различными способами — в прямой ссылке или в расширении со знаком доллара. При использовании прямой ссылки значение переменной будет применяться в вычислении. При использовании расширения со знаком доллара все расширение будет заменено на значение переменной, прежде чем будет выполнен синтаксический анализ выражения. Поэтому два различных метода могут возвратить различные результаты.
Пример: использование переменной с расширением со знаком доллара
Переменная x содержит текстовую строку Sum(Sales).
В диаграмме можно определить выражение $(x)/12. Результат такой же, как при наличии выражения диаграммы Sum(Sales)/12.
Однако, если изменить значение переменной x, например, на значение Sum(Budget), данные диаграммы будут немедленно пересчитаны с выражением, интерпретированным как Sum(Budget)/12.
Пример: использование переменной с расширением со знаком доллара в сводной таблице
Предположим, есть Сводная таблица или объект Pivot, который содержит следующее:
-
Измерения: Product Type и Product Name.
-
Меры: Sum(Sales) и Count (distinct InvoiceNumber).
-
Элементы в разделе Столбцы ― это Значения (по умолчанию) и поле Quarter.
Можно использовать переменные, чтобы получить интерактивный анализ. Предположим, что создана переменная vUserInteraction с пустым определением. Затем на листе создаются две диаграммы типа Кнопка, настроенные с помощью действия Задать значение переменной:
-
Показать больше сведений: нажмите эту кнопку, чтобы задать для vUserInteraction значение ='Yes'.
-
Показать меньше сведений: нажмите эту кнопку, чтобы задать для vUserInteraction значение ='No'.
В сводную таблицу можно добавить несколько дополнительных мер на диаграмму, например Count(Quantity) и Sum(Cost). Затем настройте для каждого столбца меры следующее значение для Показать столбец, если:
'$(Reference)'='Yes'
Это позволяет диаграмме адаптироваться к тому, нужна ли пользователю дополнительная информация или нет. Если пользователь нажимает кнопку Показать больше сведений, в таблицу будут добавлены дополнительные меры. Если нет или если пользователь нажимает кнопку Показать меньше сведений, дополнительные меры убираются.
Дополнительные примеры: использование переменных в расширениях со знаком доллара
Расширения со знаком доллара ― это универсальный и мощный инструмент в Qlik Sense, для которого можно найти множество применений. Для ознакомления с другими примерами см. раздел Pасширения со знаком доллара.
Пример: прямая ссылка на переменную в выражении
Переменные не так часто используются в качестве прямой ссылки, но в некоторых случаях это полезно. Пример:
Предположим, есть поле TransactionSummary в модели данных, которое содержит сводки транзакций в виде произвольного текста. Это поле может содержать дополнительную информацию о транзакциях. Например, сводка по транзакции может содержать документальное подтверждение, что клиент приобрел товар с использованием предоставленного магазином кредита, или информацию о проблемах, возникших во время продажи.
В приложении можно использовать TransactionSummary, однако требуется обеспечить контекст для данных, не затрагивая модель данных или скрипт загрузки и не сохраняя их в других местах диаграммы.
Можно сделать следующее:
-
Создайте переменную с именем vIntroStatement в диалоговом окне «Переменные», используя следующее определение:
='The following summary was provided by the vendor: '
-
Добавьте следующую меру в диаграмму Текст и изображение:
vIntroStatement & TransactionSummary
Сохраните вводное утверждение в виде переменной, чтобы централизованно управлять использованием значения. Так, переменную vIntroStatement можно использовать в нескольких диаграммах и в разных мерах (например, может существовать отдельная диаграмма, которая иногда содержит текст, описывающий, сколько единиц было продано в рамках транзакции). Использование переменной позволяет упростить процесс обновления выражений в приложении. Чтобы изменить формулировку, просто обновите переменную ― и изменения отразятся во всем приложении.
Интерпретация имен
Не рекомендуется использовать одинаковые имена для переменной и поля или функции в Qlik Sense. Но при выполнении этого действия необходимо знать о порядке их использования в выражении.
Пример:
Строка XXX представляет поле, переменную, функцию или меру. XXX будет интерпретироваться как одна из них, в зависимости от способа создания выражения.
Выражение | XXX интерпретируется как |
---|---|
XXX | мера, переменная или поле |
$(XXX) | переменная |
Count(XXX) | поле или переменная |
XXX() | функция |
Присваивая имя сущности, старайтесь не использовать одно и то же имя для нескольких полей, переменных или мер. Существует строгий порядок очередности при разрешении конфликтов между сущностями с идентичными именами. Этот порядок отражается во всех объектах и контекстах, в которых используются такие сущности. Этот порядок приоритета выглядит следующим образом:
-
Внутри агрегирования у поля есть приоритет над переменной. Метки мер не являются релевантными в агрегированиях и не приоритизируются.
-
Вне агрегирования у метки меры есть приоритет над переменной, у которой в свою очередь есть приоритет над полем.
-
Кроме того, вне агрегирования меру можно использовать повторно путем ссылки на его метку, если метка по сути не является вычисляемой. В такой ситуации мера теряет часть значимости, чтобы сократить риск создания самоссылки, и в данном случае имя всегда будет интерпретироваться, во-первых, как метка меры, во-вторых, как имя поля и, в-третьих, как имя переменной.
Рекомендуется использовать стандартные правила именования для переменных, создаваемых в приложении. Например, правило может требовать, чтобы все имена переменных начинались с v. Пример: vUserText. Это помогает быстро распознавать переменные и отличать их от мер, полей и функций.
Вычисление переменной
Существует несколько способов использования переменных с вычисляемыми значениями в программе Qlik Sense. Результат зависит от того, как это будет определено и названо в выражении.
Для этого примера необходимо, чтобы в редактор загрузки данных были помещены следующие данные.
Давайте определим следующие две переменные в диалоговом окне «Переменные».
- Имя vSales Определение'Sum(Sales)'
- Имя vSales2 Определение'=Sum(Sales)'
Во второй переменной мы добавляем знак равенства перед выражением. В результате переменная будет вычислена до того, как она будет расширена, а выражение оценено.
При использовании неизмененной переменной vSales, например, в мере, результатом будет строка Sum(Sales), то есть вычисления не будут выполнены.
В случае добавления расширения со знаком доллара и вызова элемента $(vSales) в выражении переменная будет расширена, а сумма Sales отобразится.
Наконец, если будет вызван элемент $(vSales2), вычисление переменной будет выполнено до ее расширения. Это означает, что отображаемый результат — это итоговая сумма элементов Sales. Разницу использования элементов =$(vSales) и =$(vSales2) в качестве выражений мер можно увидеть в этой диаграмме с отображением результатов:
Dim | $(vSales) | $(vSales2) |
---|---|---|
A | 350 | 1560 |
B | 470 | 1560 |
C | 740 | 1560 |
Как можно увидеть, элемент $(vSales) показывает частичную сумму для значения измерения, а элемент $(vSales2) показывает итоговую сумму.