# Expansión de signo dólar empleando una variable

En el script de carga o una expresión de gráfico, utilice una variable con la expansión de signo dólar para:

* Hacer referencia a texto

* Hacer referencia a un valor numérico

## Variable de texto

Cuando se utiliza una variable para reemplazo de texto en el script o en una expresión, se utiliza la sintaxis siguiente:

` $(variablename)
             `

`$(variablename)` expande al valor de la variable. Si `variablename` no existe, la expansión dará como resultado una cadena vacía.

## Ejemplos: scripts de carga de variables de texto

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

#### Ejemplo 1: script de carga

Script de carga

Cargue los datos siguientes como una carga inline en el editor de carga de datos.

```
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;
```

Para más información sobre el uso de cargas inline, vea [Usar cargas inline para cargar datos](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

Explicación

Este ejemplo demuestra:

* Cómo expandir una variable en asignaciones de variables.

* Cómo expandir variables combinadas con operaciones textuales.

Esta es una configuración útil para crear etiquetas dinámicas y cadenas de texto generales que combinan un contenido variable con cadenas estáticas.

Resultado

Cree la siguiente tabla en Qlik Sense:

Tabla: Resultado del script de carga

| X | Y | Z | NewString |
| --- | --- | --- | --- |
| rojo | azul | rojo azul | rojo verde azul |

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

#### Ejemplo 2: script de carga

Script de carga

Cargue los datos siguientes como una carga inline en el editor de carga de datos.

```
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 ];
```

Explicación

Las sentencias `Set` y `Let` sirven para asignar valores a las variables en el script de carga. La diferencia entre ambas es que la sentencia `Set` asigna una cadena a la variable, mientras que la sentencia `Let` evalúa el contenido de la cadena antes de asignar el valor resultante a la variable. La tabla de carga inline en este ejemplo se complementa con dos sentencias de load precedente que se utilizan para visualizar diferentes evaluaciones de la variable `vEvaluate` como una cadena de texto y como la expresión correspondiente.

Resultado

Cree la siguiente tabla en Qlik Sense:

Tabla: Resultado del script de carga

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

## Ejemplo: expresión de gráfico de variable de texto

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

#### Ejemplo: script de carga

Script de carga

Cargue los datos siguientes como una carga inline en el editor de carga de datos.

```
// 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
];
```

Variables

En una hoja en modo de edición, abra el cuadro de diálogo Variables desde el panel de Activos.

Abra el diálogo variables

Abra el diálogo variables

Abra el diálogo variables ![KPI que utilizan modificadores de conjuntos.](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_gen_dollar_open_variable_dialog.png)

Cree las siguientes variables:

Variable para crear

| Nombre | Definición |
| --- | --- |
| vSales | Sum(Sales) |
| vSales2014 | Sum({&lt;Year={2014}&gt;}Sales) |
| vSales2015 | Sum({&lt;Year={2015}&gt;} Sales) |
| vSalesAllYears | $(vSales2014) +$(vSales2015) |
| vSalesDifference | $(vSales2015)/$(vSales2014) - 1 |

Variables

Variables

Variables ![KPI que utilizan modificadores de conjuntos.](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_gen_dollar_variables_window_new.png)

Cree gráficos de KPI para ver las expansiones.

KPI que utilizan expansiones de signo dólar

KPI que utilizan expansiones de signo dólar

KPI que utilizan expansiones de signo dólar ![KPI que utilizan expansiones de signo dólar.](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_gen_dollar_kpis.png)

## Expansión de variable numérica

Para expansiones de variables numéricas se emplea la sintaxis siguiente:

` (#variablename)
             `

La expansión siempre produce una representación de decimal válida del valor numérico de la variable, posiblemente con notación exponencial (para números muy grandes o pequeños). Si `variablename` no existe o no contiene un valor numérico, se expandirá a 0 en vez de NULL.

## Ejemplos: scripts de carga de variables numéricas

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

#### Ejemplo 1: script de carga

Script de carga

Cargue los datos siguientes como una carga inline en el editor de carga de datos.

```
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'); 
```

Explicación

La expansión `#vVariable` siempre produce una representación de decimal válida del valor numérico de la variable. Esto es útil cuando se utiliza una coma, en lugar de un punto, como separador decimal y existe el riesgo de un conflicto con las listas separadas por comas.

La razón principal para expandir estas variables en una tabla de carga inline es que no se requiere entrecomillado adicional de `$(X)`.

Resultado

Cree la siguiente tabla en Qlik Sense:

Tabla: Resultado del script de carga

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

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

#### Ejemplo 2: script de carga

Script de carga

Cargue los datos siguientes como una carga inline en el editor de carga de datos.

```
// 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');
```

Explicación

La expansión #vVariable siempre produce una representación de decimal válida del valor numérico de la variable. Esto es útil cuando se utiliza una coma, en lugar de un punto, como separador decimal y existe el riesgo de un conflicto con las listas separadas por comas. También es importante tener en cuenta que la precisión numérica se verá afectada debido a que la parte decimal se trunca cuando las variables se expanden sin un separador decimal correcto.

La razón principal para expandir estas variables en una tabla de carga inline es que no se requiere entrecomillado adicional de $(X).

Resultado

Cree la siguiente tabla en Qlik Sense:

Tabla: Resultado del script de carga

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

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

#### Ejemplo 3: script de carga

Script de carga

Cargue los datos siguientes como una carga inline en el editor de carga de datos.

```
// 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
```

Explicación

La expansión #vVariable siempre produce una representación de decimal válida del valor numérico de la variable. Esto es útil cuando se utiliza una coma, en lugar de un punto, como separador decimal y existe el riesgo de un conflicto con las listas separadas por comas. También es importante tener en cuenta que la precisión numérica se verá afectada debido a que la parte decimal se trunca cuando las variables se expanden sin un separador decimal correcto.

La razón principal para expandir estas variables en una tabla de carga inline es que no se requiere entrecomillado adicional de $(X).

Resultado

Cree la siguiente tabla en Qlik Sense:

Tabla: Resultado del script de carga

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

## Expandir variables que hacen referencia a estados alternos

La variable tiene un solo valor y se usa en todos los estados alternos. Cuando expande una variable, el valor también es el mismo, independientemente de dónde se haya creado y del estado del objeto.

Si la variable es una variable calculada, es decir, la definición comienza con un signo igual, el cálculo se realiza en el estado predeterminado, a menos que especifique un estado alterno en la definición de la variable.

Por ejemplo, si tiene un estado denominado MyState y una variable denominada vMyVar:

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

El contenido de la definición de variable, con una referencia explícita al nombre del estado alterno, determina en qué estado se evaluará el contenido de la variable.

## Interacción entre variables y expresiones de conjunto externas

Cuando se hace referencia a una variable en una expansión de signo dólar que también contiene una expresión de conjunto externa, se aplica un orden de evaluación específica. Para más detalles, consulte [Búsqueda de variables](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/outer-set-expression-dollar-sign-expansion.htm#Variable).

## Más información

* [Let](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Let.htm)

* [Set](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Set.htm)

* [Trabajar con variables en el editor de carga de datos](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/work-with-variables-in-data-load-editor.htm)