En el script de carga o una expresión de gráfico, use 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
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;
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 azul verde
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)
HIJ
4
jkl
upper(String)
JKL
Ejemplo: expresión de gráfico de variable de texto
Script de carga
Cargue los datos siguientes como una carga inline en el editor de carga de datos.
En una hoja en modo de edición, abra el cuadro de diálogo Variables desde el panel de Activos.
Cree las siguientes variables:
Variable para crear
Nombre
Definición
vSales
Sum(Sales)
vSales2014
Sum({<Year={2014}>}Sales)
vSales2015
Sum({<Year={2015}>} Sales)
vSalesAllYears
$(vSales2014) +$(vSales2015)
vSalesDifference
$(vSales2015)/$(vSales2014) - 1
Cree gráficos de KPI para ver las expansiones.
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
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
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
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 alternativo en la definición de 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.
No dude en indicarnos en qué podemos mejorar si encuentra algún problema en esta página o su contenido, como, por ejemplo, errores tipográficos, pasos que falta o errores técnicos.