Saltar al contenido principal Saltar al contenido complementario

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.

Sintaxis:  

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.

"number" especifica un tipo numérico.

CONSTRAIN vExampleText = {"type": "text"}
CONSTRAIN vExampleNumeric = {"type": "number"}
"maxnum" Indique un valor máximo para una variable. Solo números (enteros o de punto flotante). Se permite la notación científica.
CONSTRAIN vExample = {"maxnum": 5000}
"minnum" Indique un valor mínimo para una variable. Solo números (enteros o de punto flotante). Se permite la notación científica.
CONSTRAIN vExample = {"minnum": 250}
"valuesnum" Defina una lista de valores numéricos aceptables para la variable. Lista separada por comas de números incluidos entre corchetes. Por ejemplo una barra invertida: [1,2,3]
CONSTRAIN vExample = {"valuesnum": [1,2,3]}
"valuestext" Defina una lista de valores de texto aceptables para la variable. Lista separada por comas de cadenas de texto entre corchetes. Por ejemplo una barra invertida: ["a","b","c"]
CONSTRAIN vExample = {"valuestext": ["Department A", "Department B", "Department C"]}

Cuándo utilizar una sentencia Constrain

Utilice la sentencia Constrain para evitar que se carguen valores de variables no deseados en las apps de análisis. En las secciones siguientes se describen formas específicas en que puede utilizarla.

Actualización de la variable de tiempo de recarga

Constrain es especialmente útil cuando se utiliza en combinación con actualizaciones de variables en tiempo de recarga. Con las actualizaciones de variables en tiempo de recarga, puede actualizar dinámicamente las variables durante las recargas de la app, utilizando la propiedad variables de la API de recargas Reloads. La sentencia Constrain impide que se incorporen definiciones de variables maliciosas o con mal formato a las recargas de análisis.

Las actualizaciones de variables en tiempo de recarga, junto con la sentencia Constrain, admiten los siguientes casos de uso:

  • Apps con plantillas que cargan datos de forma selectiva en función de condiciones como el ID o el nombre del cliente (que pueden pasarse en el momento de la carga como variables).

  • Control central sobre apps distribuidas en muchos espacios empresariales inquilinos de Qlik Cloud

  • Migración de flujos de trabajo y tareas orientados a variables desde QlikView y Qlik Sense Client-Managed a la nube

Seguridad, fiabilidad y colaboración

Incluso cuando se utiliza fuera de los escenarios de actualización de variables en tiempo de recarga, Constrain mejora los controles de seguridad para la autoría de scripts de carga; por ejemplo, durante el desarrollo colaborativo de scripts de carga. Por ejemplo, el propietario de una app podría definir restricciones para los valores de las variables, informando a los colaboradores de las condiciones específicas que deben cumplirse para que la app se recargue correctamente de forma fiable.

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.

  • Si ya ha cargado en la app una variable de script con un nombre determinado, 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.

  • 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.

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. Si define restricciones mediante la API, todos los intentos de actualizar los valores de las variables, ya sea directamente en el script de carga, en la vista de hoja o a través de la API Reloads, estarán sujetos a las restricciones.

Para definir restricciones de variables mediante la API pública, utilice el objeto GenericVariableConstraints en la API Qlik Sense Engine (qix): GenericVariableConstraints.

Ejemplo: type

Ejemplo: maxnum

Ejemplo: minnum

Ejemplo: valuesnum

Ejemplo: valuestext

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.

Ejemplos: múltiples restricciones

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

¿Esta página le ha sido útil?

Si encuentra algún problema con esta página o su contenido (errores tipográficos, pasos que faltan o errores técnicos), no dude en ponerse en contacto con nosotros.