# Расширение со знаком доллара с использованием переменной

В скрипте загрузки или выражении диаграммы используйте переменную в расширении со знаком доллара в следующих случаях:

* ссылка на текст;

* ссылка на числовое значение.

## Текстовая переменная

При использовании переменной для текстового замещения в скрипте или в выражении используется следующий синтаксис:

` $(variablename)
             `

`$(variablename)` расширяется до значения в переменной. Если элемент `variablename` не существует, расширение будет пустой строкой.

## Примеры: скрипты загрузки текстовых переменных

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/dollar-sign-expansion-using-variable.htm)

#### Пример 1: скрипт загрузки

Скрипт загрузки

Загрузите следующие данные через встроенную загрузку в редакторе загрузки данных:

```
Set x = 'red';  	// Assign the value "red" to variable x
Set y = 'blue'; 	 // Assign the value "blue" to variable y
Set z = '$(x) $(y)';    // Expands x and y, returns "red blue" in variable z

// Expand x and y, return "red green blue" in variable MyString

Let MyString='$(x)'&' green '&'$(y)';

// Create table MyTable, load variable values for x, y, z into fields X, Y, Z
// Concatenate with variable MyString into field NewString

MyTable:
Load '$(x)' as X, '$(y)' as Y, '$(z)' as Z, '$(MyString)' as NewString autogenerate 1;
```

Для получения дополнительной информации об использовании встроенных загрузок см. [Использование встроенных загрузок для загрузки данных](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

Объяснение

Этот пример демонстрирует:

* как расширить переменную в присваиваниях переменных;

* как расширить переменные в сочетании с текстовыми операциями.

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

Выходные данные

Создайте следующую таблицу в Qlik Sense:

Таблица. Выходные данные скрипта загрузки

| X | Y | Z | NewString |
| --- | --- | --- | --- |
| red | blue | red blue | красный зеленый синий |

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/dollar-sign-expansion-using-variable.htm)

#### Пример 2: скрипт загрузки

Скрипт загрузки

Загрузите следующие данные через встроенную загрузку в редакторе загрузки данных:

```
Set vFunction = 'upper';  // Assign the string “upper” to variable vFunction
Set vField = 'String';    // Assign the string "String" to variable vField
Let vEvaluate = '$(vFunction)'&'('&'$(vField)'&')';

// The variable vEvaluate returns the value "upper(string)"

MyTable: // Create table called MyTable
Load *, $(vEvaluate) as Upper;          // vEvaluate expanded as a dynamic expression
Load *, '$(vEvaluate)' as Expression;   // vEvaluate expanded as string
Load * inline [
ID, String
1, abc
2, def
3, ghi
4, jkl ];
```

Объяснение

Операторы `Set` и `Let` используются для присвоения значений переменным в скрипте загрузки. Разница между ними заключается в том, что оператор `Set` присваивает переменной строку, а оператор `Let` вычисляет содержимое строки перед присвоением переменной результирующего значения. Загрузка встроенной таблицы в этом примере дополнена двумя операторами предшествующей загрузки, которые используются для визуализации различных вычислений переменной `vEvaluate` как в виде текстовой строки, так и в виде соответствующего выражения.

Выходные данные

Создайте следующую таблицу в Qlik Sense:

Таблица. Выходные данные скрипта загрузки

| ID | String | Expression | Upper |
| --- | --- | --- | --- |
| 1 | 'abc' | upper(String) | ABC |
| 2 | def | upper(String) | def |
| 3 | ghi | upper(String) | GHI |
| 4 | jkl | upper(String) | JKL |

## Пример: выражение диаграммы с текстовой переменной

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/dollar-sign-expansion-using-variable.htm)

#### Пример: скрипт загрузки

Скрипт загрузки

Загрузите следующие данные через встроенную загрузку в редакторе загрузки данных:

```
// Create table SalesByCountry
SalesByCountry:
Load * Inline [
Country, Year, Sales
Argentina, 2014, 66295.03
Argentina, 2015, 140037.89
Austria, 2014, 54166.09
Austria, 2015, 182739.87
Belgium, 2014, 182766.87
Belgium, 2015, 178042.33
Brazil, 2014, 174492.67
Brazil, 2015, 2104.22
Canada, 2014, 101801.33
Canada, 2015, 40288.25
Denmark, 2014, 45273.25
Denmark, 2015, 106938.41
Finland, 2014, 107565.55
Finland, 2015, 30583.44
France, 2014, 115644.26
France, 2015, 30696.98
Germany, 2014, 8775.18
Germany, 2015, 77185.68
];
```

Переменные

На листе в режиме изменения откройте диалоговое окно Переменные с панели Ресурсы.

Открытие диалогового окна переменных

Открытие диалогового окна переменных

Открытие диалогового окна переменных ![Ключевые показатели эффективности, использующие модификаторы множества.](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Resources/Images/ui_gen_dollar_open_variable_dialog.png)

Создайте следующие переменные:

Переменную, которую нужно создать

| Имя | Определение |
| --- | --- |
| vSales | Sum(Sales) |
| vSales2014 | Sum({&lt;Year={2014}&gt;}Sales) |
| vSales2015 | Sum({&lt;Year={2015}&gt;} Sales) |
| vSalesAllYears | $(vSales2014) +$(vSales2015) |
| vSalesDifference | $(vSales2015)/$(vSales2014) - 1 |

Переменные

Переменные

Переменные ![Ключевые показатели эффективности, использующие модификаторы множества.](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Resources/Images/ui_gen_dollar_variables_window_new.png)

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

Ключевые показатели эффективности, использующие расширения со знаком доллара

Ключевые показатели эффективности, использующие расширения со знаком доллара

Ключевые показатели эффективности, использующие расширения со знаком доллара ![Ключевые показатели эффективности, использующие расширения со знаком доллара.](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Resources/Images/ui_gen_dollar_kpis.png)

## Расширение числовых переменных

Для расширений числовых переменных используется следующий синтаксис:

` (#variablename)
             `

Расширение возвращает числовое значение из переменной в виде десятичного числа, очень большие или малые числа — в экспоненциальном представлении. Если переменная `variablename` не существует или не содержит числового значения, она будет расширена до 0 вместо NULL.

## Примеры: скрипты загрузки числовых переменных

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/dollar-sign-expansion-using-variable.htm)

#### Пример 1: скрипт загрузки

Скрипт загрузки

Загрузите следующие данные через встроенную загрузку в редакторе загрузки данных:

```
Set DecimalSep = ',';  // Set decimal comma as separator for this example.
Let X = 7/2;           // Assign the expression 7/2 to variable X.

MyTable:   // Create an inline table labeled “MyTable”
Load 1 as ID, * inline [  
DecimalComma	DecimalPoint
$(X)	$(#X) ] 
(delimiter is '\t'); 
```

Объяснение

Расширение `#vVariable` всегда возвращает числовое значение из переменной в виде десятичного числа. Это полезно, когда в качестве десятичного разделителя используется запятая, а не точка, и есть риск конфликта со списками, разделенными запятыми.

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

Выходные данные

Создайте следующую таблицу в Qlik Sense:

Таблица. Выходные данные скрипта загрузки

| DecimalComma | DecimalPoint |
| --- | --- |
| 3,5 | 3.5 |

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/dollar-sign-expansion-using-variable.htm)

#### Пример 2: скрипт загрузки

Скрипт загрузки

Загрузите следующие данные через встроенную загрузку в редакторе загрузки данных:

```
// The three Set statements below are required to mimic and initialize
// Format specifiers that are relevant to this particular example

Set ThousandSep=' '; 		// Set example thousand separator
Set DecimalSep=','; 		// Set example decimal separator
Set TimestampFormat='YYYY-MM-DD hh:mm:ss';	 // Set example date format
Let vRaw = today()-1/1440;  		 // Timestamp minus one minute
Let vFormat = timestamp($(#vRaw));	 // Formatted as timestamp

// Create MyTable as an inline table to expand variables as field values
						
MyTable:
Load * inline [
DecimalComma	DecimalPoint	FormattedNumber
$(vRaw)	$(#vRaw)	$(vFormat) ] (delimiter is '\t');
```

Объяснение

Расширение #vVariable всегда возвращает числовое значение из переменной в виде десятичного числа. Это полезно, когда в качестве десятичного разделителя используется запятая, а не точка, и есть риск конфликта со списками, разделенными запятыми. Также важно отметить, что точность чисел будет нарушена из-за усечения десятичной части при расширении переменных без правильного десятичного разделителя.

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

Выходные данные

Создайте следующую таблицу в Qlik Sense:

Таблица. Выходные данные скрипта загрузки

| DecimalComma | DecimalPoint | FormattedNumber |
| --- | --- | --- |
| 44 470,00 | 44469.999305556 | 2021-09-18 23:59:00 |

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/dollar-sign-expansion-using-variable.htm)

#### Пример 3: скрипт загрузки

Скрипт загрузки

Загрузите следующие данные через встроенную загрузку в редакторе загрузки данных:

```
// The three Set statements below are required to mimic and initialize
// format specifiers that are relevant to this particular example

Set ThousandSep=' '; 		// Set example thousand separator
Set DecimalSep=','; 		// Set example decimal separator
Set TimestampFormat='YYYY-MM-DD hh:mm:ss';	// Set example date format

// Assign a numerical value and a valid format specifier to vStart

Let vStart = timestamp#('2021-03-23 12:34:56','$(TimestampFormat)');

// Calculate timestamp (vStart + 3 hours) with valid decimal separator: "."

Let vStop = timestamp($(#vStart)+1/8,'YYYY-MM-DD hh:mm:ss');

// Create MyTable as an inline table to expand variables as field values

MyTable:
Load * inline [
StartTime	StopTime
$(vStart)	$(vStop) ] (delimiter is '\t');

// This is a tab delimited inline table
// Tab delimited tables are useful for avoiding conflicting list separators
```

Объяснение

Расширение #vVariable всегда возвращает числовое значение из переменной в виде десятичного числа. Это полезно, когда в качестве десятичного разделителя используется запятая, а не точка, и есть риск конфликта со списками, разделенными запятыми. Также важно отметить, что точность чисел будет нарушена из-за усечения десятичной части при расширении переменных без правильного десятичного разделителя.

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

Выходные данные

Создайте следующую таблицу в Qlik Sense:

Таблица. Выходные данные скрипта загрузки

| StartTime | StopTime |  |
| --- | --- | --- |
| 2021-03-23 12:34:56 | 2021-03-23 15:34:56 |  |

## Расширение переменных, ссылающихся на альтернативные состояния

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

Если переменная является рассчитанной переменной, то есть определение начинается со знака «равно», вычисление делается в состоянии по умолчанию, если в определении переменной не указано альтернативное состояние.

Например, если имеется состояние с именем MyState и переменная с именем vMyVar:

```
vMyvar: =only({MyState}MyField)
```

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

## Подробнее

* [Let](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Let.htm)

* [Set](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Set.htm)

* [Работа с переменными в редакторе загрузки данных](https://help.qlik.com/ru-RU/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/work-with-variables-in-data-load-editor.htm)