# Ссылки на поля, меры и переменные

Выражение может содержать ссылки на поля, переменные и меры.

В большинстве случаев выражения — это агрегирования, являющиеся вычислениями, которые потенциально могут охватывать несколько записей. Это означает, что все ссылки на поля в выражении необходимо включать в функцию агрегирования. Если функция агрегирования не используется, применяется функция Only().

Если имя меры используется в выражении, оно интерпретируется как псевдоним для меры. Это позволяет повторно использовать уже определенный элемент. Таким образом можно использовать метки основных мер и мер диаграмм. Однако мера диаграммы должна быть в той же диаграмме. Использовать метки мер в других диаграммах нельзя.

Меру можно определить рекурсивно. Другими словами, мера может содержать ссылку на саму себя. Однако это следует делать только в диаграммах с небольшим количеством строк. Если в диаграмме много строк, производительность снижается. Если будут сотни строк, то рекурсивное определение полностью прекратит работу.

Переменная может использоваться двумя различными способами — в прямой ссылке или в расширении со знаком доллара. При использовании прямой ссылки значение переменной будет применяться в вычислении. При использовании расширения со знаком доллара все расширение будет заменено на значение переменной, прежде чем будет выполнен синтаксический анализ выражения. Поэтому два различных метода могут возвратить различные результаты.

## Интерпретация имен

Имя в выражении может быть ссылкой на поле, переменную, функцию или меру. В зависимости от ситуации имя интерпретируется по-разному.

Пример:

Строка XXX представляет поле, переменную, функцию или меру. XXX будет интерпретироваться как одна из них, в зависимости от способа создания выражения.

Примеры интерпретации имен

| Выражение | XXX интерпретируется как |
| --- | --- |
| `XXX` | мера, переменная или поле |
| `$(XXX)` | переменная |
| `Count(XXX)` | поле или переменная |
| `XXX()` | функция |

Не следует использовать одно и то же имя для поля и переменной (или меры). Однако в противном случае и при неоднозначности применяется следующий порядок очередности.

* Если имя находится в функции агрегирования, у поля есть приоритет над переменной.

* Если имя находится за рамками функции агрегирования, у метки меры есть приоритет над именем переменной, у которого в свою очередь есть приоритет над именем поля.

## Правила для выражений

К выражениям диаграммы применяются следующие правила:

* Если ссылка на поле не заключена в функцию агрегирования, функция Only() используется подсистемой.

* Все выражения возвращают число и/или строку, исходя из применимости.

* Логические функции и операторы возвращают значение 0 для элемента False и -1 для элемента True. Преобразования числа в строку и строки в число являются неявными.

* Логические операторы и функции интерпретируют значение 0 как False, а все остальные как True.

* Выражения, которые не могут быть правильно оценены, например, в результате неправильных параметров или функций, возвращают значение NULL.

## Подробнее

* [Выражения скрипта](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/script-expressions.htm)
* [Использование выражений в визуализациях](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/use-expressions-in-visualizations.htm)