# Constrain

La sentencia Constrain puede utilizarse en combinación con las sentencias Let o Set para definir variables de script. La sentencia Constrain le permite definir restricciones en los posibles valores de estas variables. Si la definición de una variable viola las restricciones, la recarga falla. Con las restricciones, podemos exigir que los valores de las variables coincidan con determinados tipos específicos, que se encuentren dentro de rangos numéricos concretos o que coincidan con valores aceptables definidos por nosotros.

Constrain variablename = json

Donde:

* variablename es una variable de script.

* json es un objeto JSON válido que especifica las restricciones. Las restricciones individuales se añaden dentro de este objeto como pares de clave y valor.

Tipos de restricciones

| Tipo de restricción (clave) | Significado | Requisitos de restricción (valor) | Ejemplos |
| --- | --- | --- | --- |
| `"type"` | Limitar los valores de las variables a un tipo de datos específico. | `"text"` especifica un tipo de texto.<br><br>`"number"` especifica un tipo numérico. | ```<br>CONSTRAIN vExampleText = {"type": "text"}<br>```<br><br>```<br>CONSTRAIN vExampleNumeric = {"type": "number"}<br>``` |
| `"maxnum"` | Indique un valor máximo para una variable. | Solo números (enteros o de punto flotante). Se permite la notación científica. | ```<br>CONSTRAIN vExample = {"maxnum": 5000}<br>``` |
| `"minnum"` | Indique un valor mínimo para una variable. | Solo números (enteros o de punto flotante). Se permite la notación científica. | ```<br>CONSTRAIN vExample = {"minnum": 250}<br>``` |
| `"valuesnum"` | Defina una lista de valores numéricos aceptables para la variable. | Lista separada por comas de números incluidos entre corchetes. Por ejemplo: `[1,2,3]` | ```<br>CONSTRAIN vExample = {"valuesnum": [1,2,3]}<br>``` |
| `"valuestext"` | Defina una lista de valores de texto aceptables para la variable. | Lista separada por comas de cadenas de texto entre corchetes. Por ejemplo: `["a","b","c"]` | ```<br>CONSTRAIN vExample = {"valuestext": ["Department A", "Department B", "Department C"]}<br>``` |

## Cuándo usar una Constrain sentencia

Utilice la sentencia Constrain para evitar que se carguen valores de variables no deseados en las aplicaciones de análisis.

## Consideraciones

* La definición Constrain para la variable debe ser un objeto JSON válido.

* Puede especificar más de una restricción para una misma variable. Todas las restricciones de una variable deben estar contenidas en un único objeto de restricción. Para ejemplos, vea [Ejemplos: múltiples restricciones](https://help.qlik.com/es-ES/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm#Examples).

* Si ya ha cargado una variable de script con un nombre determinado en la aplicación, los futuros intentos de definir restricciones y valores para esa variable pueden fallar debido a conflictos entre las variables originales y las redefinidas.

  Para resolver estos conflictos, restablezca las restricciones y los valores de las variables insertando definiciones en blanco. Ejemplos:

  ```
  CONSTRAIN x;
  LET x;
  ```

  ```
  CONSTRAIN x;
  SET x;
  ```

  A continuación, puede redefinir la variable y sus restricciones en secciones posteriores del script de carga. Para ver un ejemplo más extenso, consulte [Ejemplo: resolución de conflictos en la definición de variables](https://help.qlik.com/es-ES/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm#ConflictResolve).

* El orden de la definición de la variable y la definición de la restricción no importa. Sin embargo, en caso de fallo de recarga relacionado con la variable, la línea en la que se produce el punto de ruptura será diferente.

* La sentencia de script Constrain solo restringe las definiciones de variables para las variables de script. También puede aplicar restricciones a las variables de script y de usuario final (las creadas o actualizadas en la vista de hoja o como variables de sesión mediante la API) utilizando la API pública. Para más información, vea [Alternativas de desarrollo para definir las restricciones de las variables](https://help.qlik.com/es-ES/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm#Developer).

* Se validan las restricciones para evitar escenarios que no pueden coincidir con ningún valor para la variable. Ejemplos de restricciones no válidas:

  * {"minnum": 5000, "maxnum": 4}
  * {"type": "text", "maxnum": 4}

## Alternativas de desarrollo para definir las restricciones de las variables

También puede utilizar la API pública para definir restricciones de variables, en lugar de utilizar la sentencia Constrain en el script de carga. Al definir restricciones mediante la API, todos los intentos de actualizar los valores de las variables —ya sea directamente en el script de carga o en la vista de hoja— estarán sujetos a las restricciones.

Para definir restricciones de variables mediante la API pública, utilice la propiedad GenericVariableConstraints en la API QlikEngine JSON: [GenericVariableProperties](https://help.qlik.com/en-US/sense-developer/May2026/Subsystems/EngineJSONAPI/Content/models-genericvariableproperties.htm) (solo en inglés).

## Ejemplo - type

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Falló la recarga con "tipo"

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Una sentencia Constrain para especificar que la definición de la variable para a debe tener el tipo number.

* Una sentencia LET que define la variable a.

Script de carga

```
CONSTRAIN a = {"type": "text"};
LET a = 1000;
```

Resultados

Que cargue los datos.

La recarga falla porque la restricción requiere un tipo de texto para la variable a. La definición de la variable es un número.

Por el contrario, especificar un type de number en la restricción haría que la recarga tuviera éxito.

## Ejemplo - maxnum

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Falló la recarga con "maxnum"

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Una sentencia Constrain para especificar que la definición de la variable para b puede tener un valor máximo de 3000.

* Una sentencia LET que define la variable b.

```
CONSTRAIN b = {"maxnum": "3000"};
LET b = 3001;
```

Resultados

Que cargue los datos.

La recarga falla porque la restricción exige un valor máximo de 3000 para la variable b. La definición de la variable se evalúa como 3001.

Por el contrario, especificar b como 2999 haría que la recarga tuviera éxito.

## Ejemplo - minnum

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Falló la recarga con "minnum"

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Una sentencia Constrain para especificar que la definición de la variable para b puede tener un valor mínimo de 3000.

* Una sentencia LET que define la variable c.

```
CONSTRAIN c = {"minnum": "3000"};
LET c = 2999;
```

Resultados

Que cargue los datos.

La recarga falla porque la restricción exige un valor mínimo de 3000 para la variable c. La definición de la variable se evalúa como 2999.

Por el contrario, especificar c como 3000 haría que la recarga tuviera éxito.

## Ejemplo - valuesnum

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Fallo de recarga con "valuesnum"

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Una sentencia Constrain para especificar que la definición de la variable para d debe ser numérica y debe ser 2, 3 o 4.

* Una sentencia LET que define la variable d.

```
CONSTRAIN d = {"valuesnum": [2,3,4]};
LET d = 1;
```

Resultados

Que cargue los datos.

La recarga falla porque la variable d se evalúa como 1, que no está en la lista de tres valores posibles.

Por el contrario, especificar d como 2 haría que la recarga tuviera éxito.

## Ejemplo - valuestext

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Falló la recarga con "texto de valor"

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Una sentencia Constrain para especificar que la definición de la variable para e debe ser uno de los siguientes valores de texto:

  * Department A

  * Department B

  * Department C

* Una sentencia SET que define la variable e.

```
CONSTRAIN e = {"valuestext": ["Department A", "Department B", "Department C"]};
SET e = Department D;
```

Resultados

Que cargue los datos.

La recarga falla porque la variable e es Department D, que no está en la lista de valores permitidos definida por la restricción.

Por el contrario, especificar e como Department C haría que la recarga tuviera éxito.

## Ejemplos: SET versus LET

Estos ejemplos muestran las diferencias de aplicación entre las restricciones cuando se utiliza SET o LET durante la definición de las variables. Todos los ejemplos utilizan restricciones que aplican un requisito de type, pero estos principios se aplican a todos los tipos de restricciones en general.

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Falló la recarga con SET

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Una sentencia Constrain para especificar que la definición de la variable para f debe tener el tipo number.

* Una sentencia SET que define la variable f.

Script de carga

```
CONSTRAIN f = {"type": "number"};
SET f = 500*2;
```

Resultados

Que cargue los datos.

La recarga falla porque la restricción requiere un tipo numérico para la variable f. La definición de la variable contiene una expresión numérica, pero como se utiliza una sentencia SET, la definición se evalúa como texto.

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Falló la recarga con LET

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Una sentencia Constrain para especificar que la definición de la variable para g debe tener el tipo text.

* Una sentencia LET que define la variable g.

Script de carga

```
CONSTRAIN g = {"type": "text"};
LET g = 500*2;
```

Que cargue los datos.

La recarga falla porque la restricción requiere un tipo de texto para la variable g. La definición de la variable contiene una expresión numérica y se utiliza una sentencia LET, que hace que la definición se evalúe como un número.

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Recarga correcta con SET

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Una sentencia Constrain para especificar que la definición de la variable para h debe tener el tipo text.

* Una sentencia SET que define la variable h.

Script de carga

```
CONSTRAIN h = {"type": "text"};
SET h = 500*2;
```

Que cargue los datos.

La recarga tiene éxito. La restricción requiere un tipo de texto para la variable h. La definición de la variable contiene una expresión numérica, pero como se utiliza una sentencia SET, la definición se evalúa como texto.

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Recarga correcta con LET

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Una sentencia Constrain para especificar que la definición de la variable para i debe tener el tipo number.

* Una sentencia LET que define la variable i.

Script de carga

```
CONSTRAIN i = {"type": "number"};
LET i = 500*2;
```

Que cargue los datos.

La recarga tiene éxito. La restricción requiere un tipo numérico para la variable i. La definición de la variable contiene una expresión numérica y se utiliza una sentencia LET, que hace que la definición se evalúe como un número.

## Ejemplos: múltiples restricciones

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Fijar los valores mínimo y máximo

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Una sentencia Constrain para especificar que la definición de la variable para j tiene que estar entre 1 y 5.

* Una sentencia LET que define la variable j.

Script de carga

```
CONSTRAIN j = {"minnum": 1, "maxnum": 5};
LET j = 2;
```

Que cargue los datos.

La recarga tiene éxito. La variable f se evalúa como 2, que está dentro del rango aceptable.

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Aceptar tanto texto como números de las listas

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Una sentencia Constrain que permite que la variable sea textual o numérica, siempre que sea uno de los valores aceptables.

* Una sentencia LET que define la variable k.

Script de carga

```
CONSTRAIN k = {"valuestext": ["abc","def","ghi"], "valuesnum": [0,1,3,5]};
LET k = 'def';
```

Que cargue los datos.

La recarga tiene éxito. El valor de la variable k se encuentra en la lista de valores aceptables. Del mismo modo, especificar k como 3 daría como resultado una recarga con éxito.

## Ejemplo: resolución de conflictos en la definición de variables

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Constrain.htm)

#### Script de carga y resultados

Vista general

Este ejemplo muestra cómo pueden producirse conflictos en la definición de variables al añadir restricciones para una variable que ya haya sido definida en la aplicación a partir de una carga anterior.

Script de carga 1: definir una variable de script

Abra el Editor de carga de datos. Agregue el siguiente script:

```
LET vConflictExample = 'Department C';
```

Que cargue los datos. La recarga se ha realizado correctamente. La variable vConflictExample se ha creado en la aplicación como una variable de script.

Script de carga 2: intento de definición de una restricción en una variable de script cargada previamente

Borre el script de carga 1. Agregue el siguiente script:

```
CONSTRAIN vConflictExample = {"type": "number"};
LET vConflictExample = 123;
```

Que cargue los datos.

La recarga falla con un error de restricción, aunque la nueva restricción y la definición del valor sean compatibles. Esto se debe a que el script de carga 1 ya cargó la variable en la aplicación, con un valor de texto, y este valor aún persiste en la aplicación. Para resolver este problema, tenemos que restablecer la restricción y la definición de la variable. Ver script de carga 3.

Script de carga 3: restablecer las definiciones de restricciones y valores

Borre el script de carga 2. Agregue el siguiente script:

```
CONSTRAIN vConflictExample;
LET vConflictExample;

CONSTRAIN vConflictExample = {"type": "number"};
LET vConflictExample = 123;

MockData:
LOAD 
* 
Inline [
id, date, amount
1, 05/30/2025, 23.56
];
```

Que cargue los datos.

La recarga tiene éxito. El script anterior puede dividirse en tres partes, cada una separada por líneas en blanco:

* La primera parte restablece la definición de la restricción y del valor para vConflictExample. Esto elimina la definición que se cargó en la aplicación con el script de carga 1.

* La segunda parte vuelve a aplicar las nuevas definiciones de restricciones y valores que fallaron en el script de carga 2.

* La tercera parte añade datos simulados simplemente para que podamos abrir la vista de hoja e inspeccionar el valor de la variable (véase más abajo).

Abra la vista de hoja en modo de edición y abra el cuadro de diálogo the Variables icon. Podemos ver que la variable vConflictExample se ha creado correctamente.

El diálogo de variables en la vista de hoja muestra que se ha resuelto el conflicto de definición de variables para vConflictExample.

El diálogo de variables en la vista de hoja muestra que se ha resuelto el conflicto de definición de variables para vConflictExample.

El diálogo de variables en la vista de hoja muestra que se ha resuelto el conflicto de definición de variables para vConflictExamplevConflictExample. ![Variables dialog in sheet view showing that the script variable has successfully been created.](https://help.qlik.com/es-ES/sense/May2026/Subsystems/Hub/Content/Resources/Images/ui_script-variable_constrain-conflict-resolved.png)

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

[Set](https://help.qlik.com/es-ES/sense/May2026/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/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/work-with-variables-in-data-load-editor.htm)