# Внешние выражения множества и расширения со знаком доллара

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

## Пример. Порядок вычисления выражений, содержащих внешнее выражение множества и pасширения со знаком доллара

Рассмотрим следующий пример выражения:

```
{<Year={2024}>} $(=Sum(Sales))
```

В приведенном выше выражении есть выражение множества для выбора значений 2024 для Year: `{<Year={2024}>}`. Когда вычисляется полное выражение этого примера, данное выражение множества не применяется.

Вместо этого сначала вычисляется выражение со знаком доллара `$(=Sum(Sales))`.

Рассматривая данный пример, предположим, что вычисление `Sum(Sales)` дает результат 1500311. При вычислении выражения `{<Year={2024}>} $(=Sum(Sales))` это число вставляется в окружающее выражение. Такой порядок оценки приводит к следующей частично вычисленной конфигурации (обратите внимание, что это не является применимым выражением Qlik Sense, оно показано только для демонстрации порядка вычисления):

```
{<Year={2024}>} 1500311
```

Затем выражение `{<Year={2024}>} 1500311` вычисляется как единое целое. Выражение множества `{<Year={2024}>}` не имеет никакого эффекта, потому что выражение справа от него ― это просто число, а не какой-либо тип агрегированного выражения.

Поэтому при использовании значения `Sum(Sales)`, приведенного выше в примере, результат вычисления всего выражения `{<Year={2024}>} $(=Sum(Sales))` будет равен 1500311.

## Построение выражения из частей

Использование в выражении pасширения со знаком доллара приводит к двойному вычислению. Такой эффект двойного вычисления можно использовать путем построения выражения из частей.

### Пример

Рассмотрим следующий пример выражения:

```
{<Year={2024}>} $(='Sum(' & 'Sales' & ')')
```

В первом раунде вычисляется pасширение со знаком доллара $(='Sum(' & 'Sales' & ')'). На этом этапе три строки объединяются в одну строку 'Sum(Sales)'. Поскольку это строка, а не выражение, выражение внутри нее в данный момент не вычисляется.

На этом этапе вычисления Qlik Sense интерпретирует выражение следующим образом:

{&lt;Year={2024}&gt;} Sum(Sales)

В этом случае внешнее выражение анализа множества будет применено к агрегированию Sum, поскольку теперь мы получили обычное выражение, а не просто число (как в [первом примере](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/outer-set-expression-dollar-sign-expansion.htm#Example1)). Обратите внимание, что первый раунд вычисления заключен в кавычки, поэтому выражение было сохранено (и объединено с помощью &) для второго раунда вычисления.

## Поиск переменных

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

### Пример

Рассмотрим следующий пример выражения:

{&lt;Year={2024}&gt;} $(Var1)

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

#### Результат A: определение переменной без знака равенства

Если Var1 определяется как Sum(Sales), то после расширения это будет выглядеть следующим образом (обратите внимание, что конфигурация ниже ― это частично вычисленное выражение):

{&lt;Year={2024}&gt;} Sum(Sales)

Диалоговое окно «Переменные», где отображается определение и значение переменной Var1, когда знак равенства не стоит в начале определения переменной.

Диалоговое окно «Переменные», где отображается определение и значение переменной Var1, когда знак равенства не стоит в начале определения переменной.

Диалоговое окно «Переменные», где отображается определение и значение переменной Var1Var1, когда знак равенства не стоит в начале определения переменной.![Диалоговое окно «Переменные», где отображается определение и значение переменной Var1, когда знак равенства не стоит в начале определения переменной (то есть Sum Sales).](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_gen_variable-def-no-equal-sign.png)

Итак, в данном примере будет применено внешнее выражение множества {&lt;Year={2024}&gt;}.

#### Результат В: определение переменной со знаком равенства

С другой стороны, если определение в Var1 начинается со знака равенства (то есть =Sum(Sales)), внешнее выражение множества не применяется. Это происходит потому, что знак равенства приводит к преждевременному вычислению выражения переменной в изолированном порядке. Это приводит к результату, похожему на [первый пример](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/outer-set-expression-dollar-sign-expansion.htm#Example1), в котором наряду с числом есть внешнее выражение множества, которое не возвращает применимого результата.

Диалоговое окно «Переменные», где отображается определение и значение переменной Var1, когда знак равенства стоит в начале определения переменной.

Диалоговое окно «Переменные», где отображается определение и значение переменной Var1, когда знак равенства стоит в начале определения переменной.

Диалоговое окно «Переменные», где отображается определение и значение переменной Var1Var1, когда знак равенства стоит в начале определения переменной.![Диалоговое окно «Переменные», где отображается определение и значение переменной Var1, когда знак равенства стоит в начале определения переменной (то есть Sum Sales).](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_gen_variable-def-with-equal-sign.png)

## Подробнее

* [Внутренние и внешние выражения множества](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-expressions-inner-and-outer.htm)

* [Расширения со знаком доллара](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/dollar-sign-expansions.htm)

* [Создание переменной](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Variables/create-variable-using-dialog.htm)

* [Диалоговое окно «Переменные»](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Sheets/variables-dialog.htm)