L'instruction Constrain peut être utilisée en combinaison avec les instructions Let ou Set pour définir des variables de script. L'instruction Constrain vous permet de définir des contraintes sur les valeurs possibles de ces variables. Si la définition d'une variable ne respecte pas les contraintes, le rechargement échoue. Les contraintes vous permettent d'exiger que les valeurs des variables correspondent à des types spécifiques, qu'elles se situent dans des plages numériques spécifiques et qu'elles correspondent à des valeurs acceptables que vous définissez.
Constrain variablename = json
où :
variablename est une variable de script.
json est un objet JSON valide spécifiant les contraintes. Les contraintes individuelles sont ajoutées dans cet objet sous forme de paires clé-valeur.
Types de contraintes
Type de contrainte (clé)
Signification
Exigences de la contrainte (valeur)
Exemples
"type"
Limitez les valeurs des variables à un type de données spécificique.
"text" spécifie un type de texte.
"number" spécifie un type numérique.
CONSTRAIN vExampleText = {"type": "text"}
CONSTRAIN vExampleNumeric = {"type": "number"}
"maxnum"
Définissez une valeur maximale pour une variable.
Nombres uniquement (entiers ou à virgule flottante). La notation scientifique est autorisée.
CONSTRAIN vExample = {"maxnum": 5000}
"minnum"
Définissez une valeur minimale pour une variable.
Nombres uniquement (entiers ou à virgule flottante). La notation scientifique est autorisée.
CONSTRAIN vExample = {"minnum": 250}
"valuesnum"
Définissez une liste de valeurs numériques acceptables pour la variable.
Liste de nombres séparés par des virgules et placés entre crochets. Par exemple : [1,2,3]
CONSTRAIN vExample = {"valuesnum": [1,2,3]}
"valuestext"
Définissez une liste de valeurs numériques acceptables pour la variable.
Liste de chaînes séparées par des virgules et placés entre crochets. Par exemple : ["a","b","c"]
Utilisez l'instruction Constrain pour éviter que des valeurs variables indésirables ne soient chargées dans les applications analytiques. Les sections suivantes décrivent les spécificités de son utilisation.
Mise à jour des variables au moment du rechargement
Constrain est particulièrement utile lorsqu'il est utilisé en combinaison avec des mises à jour de variables au moment du rechargement Avec les mises à jour de variables au moment du rechargement, vous pouvez mettre à jour dynamiquement les variables pendant le rechargement de l'application, en utilisant la propriété variables de l'API Reloads. L'instruction Constrain permet d'éviter que des définitions de variables malveillantes ou mal formatées soient intégrées dans les recharges analytiques.
Les mises à jour des variables de temps de recharge, ainsi que la déclaration Constrain, permettent de suivre les cas d'utilisation suivants :
Les applications modélisées qui chargent des données de manière sélective en fonction de conditions telles que l'identifiant ou le nom du client (qui peuvent être transmises au moment du chargement en tant que variables).
Contrôle central des applications distribuées sur de nombreux clients Qlik Cloud
Migration des flux de travail et des tâches axés sur les variables de QlikView et Qlik Sense Client-Managed vers le cloud
Sécurité, fiabilité et collaboration
Même lorsqu'il est utilisé en dehors des scénarios de mise à jour des variables de rechargement, Constrain renforce les contrôles de sécurité pour la création de scripts de chargement, par exemple, lors du développement collaboratif de scripts de chargement. Par exemple, le propriétaire d'une application peut définir des contraintes pour les valeurs des variables, informant ainsi les collaborateurs des conditions spécifiques qui doivent être remplies pour que l'application puisse être rechargée avec succès et de manière fiable.
Considérations
La définition Constrain de la variable doit être un objet JSON valide.
Vous pouvez spécifier plusieurs contraintes pour une même variable. Toutes les contraintes relatives à une variable doivent être contenues dans un seul objet de contrainte. Pour des exemples, voir Exemples - Contraintes multiples.
Si vous avez déjà chargé une variable de script portant un certain nom dans l'application, les tentatives futures de définition de contraintes et de valeurs pour cette variable peuvent échouer en raison de conflits entre les variables d'origine et les variables redéfinies.
Pour résoudre ces conflits, réinitialisez les contraintes et les valeurs des variables en insérant des définitions vierges. Exemples :
L'ordre de la définition de la variable et de la définition de la contrainte n'a pas d'importance. Toutefois, en cas d'échec du rechargement lié à une variable, la ligne où se situe le point de rupture sera différente.
L'instruction de script Constrain ne restreint les définitions de variables que pour les variables de script. Vous pouvez également appliquer des contraintes sur les variables de script et d'utilisateur final (celles créées ou mises à jour en mode feuille ou en tant que variables de session à l'aide de l'API) en utilisant l'API publique. Pour plus d'informations, consultez Alternatives du développeur pour la définition des contraintes de variables.
Alternatives du développeur pour la définition des contraintes de variables
Vous pouvez également utiliser l'API publique pour définir des contraintes de variables, plutôt que d'utiliser l'instruction Constrain dans le script de chargement. Lorsque vous définissez des contraintes via l'API, toutes les tentatives de mise à jour des valeurs des variables, que ce soit directement dans le script de chargement, dans le mode feuille ou via l'API Reloads, sont soumises aux contraintes.
Pour définir des contraintes de variables via l'API publique, utilisez l'objet GenericVariableConstraints dans l'API Qlik Sense Engine (qix) : GenericVariableConstraints.
Exemple - type
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.
Le script de chargement contient :
Une instruction Constrain pour spécifier que la définition de la variable pour a doit avoir le type number.
Une instruction LET définissant la variable a.
Script de chargement
CONSTRAIN a = {"type": "text"};
LET a = 1000;
Résultats
Chargez les données.
Le rechargement échoue parce que la contrainte exige un type texte pour la variable a. La définition de la variable est un nombre.
En revanche, si vous spécifiez un type de number dans la contrainte, le rechargement réussira.
Exemple - maxnum
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.
Le script de chargement contient :
Une instruction Constrain pour spécifier que la définition de la variable pour b peut avoir une valeur maximale de 3000.
Une instruction LET définissant la variable b.
CONSTRAIN b = {"maxnum": "3000"};
LET b = 3001;
Résultats
Chargez les données.
Le rechargement échoue parce que la contrainte exige une valeur maximale de 3000 pour la variable b. La définition de la variable est évaluée à 3001.
En revanche, si vous spécifiez b sur 2999, le rechargement réussira.
Exemple - minnum
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.
Le script de chargement contient :
Une instruction Constrain pour spécifier que la définition de la variable pour b peut avoir une valeur minimale de 3000.
Une instruction LET définissant la variable c.
CONSTRAIN c = {"minnum": "3000"};
LET c = 2999;
Résultats
Chargez les données.
Le rechargement échoue parce que la contrainte exige une valeur minimale de 3000 pour la variable c. La définition de la variable est évaluée à 2999.
En revanche, si vous spécifiez c sur 3000, le rechargement réussira.
Exemple - valuesnum
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.
Le script de chargement contient :
Une instruction Constrain pour spécifier que la définition de la variable pour d doit être numérique et doit être 2, 3 ou 4.
Une instruction LET définissant la variable d.
CONSTRAIN d = {"valuesnum": [2,3,4]};
LET d = 1;
Résultats
Chargez les données.
Le rechargement échoue, car la variable d est évaluée à 1, ce qui ne figure pas dans la liste des trois valeurs possibles.
En revanche, si vous spécifiez d sur 2, le rechargement réussira.
Exemple - valuestext
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.
Le script de chargement contient :
Une instruction Constrain pour spécifier que la définition de la variable pour e doit être l'une des valeurs de texte suivantes :
Department A
Department B
Department C
Une instruction SET définissant la variable e.
CONSTRAIN e = {"valuestext": ["Department A", "Department B", "Department C"]};
SET e = Department D;
Résultats
Chargez les données.
Le rechargement échoue car la variable e est Department D, qui ne figure pas dans la liste des valeurs autorisées définie par la contrainte.
En revanche, si vous spécifiez e sur Department C, le rechargement réussira.
Exemples - SET versus LET
Ces exemples montrent les différences entre la manière dont les contraintes sont appliquées lorsque vous utilisez SET ou LET lors de la définition des variables. Tous les exemples utilisent des contraintes appliquant une exigence type, mais ces principes s'appliquent à tous les types de contraintes en général.
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.
Le script de chargement contient :
Une instruction Constrain pour spécifier que la définition de la variable pour f doit avoir le type number.
Une instruction SET définissant la variable f.
Script de chargement
CONSTRAIN f = {"type": "number"};
SET f = 500*2;
Résultats
Chargez les données.
Le rechargement échoue parce que la contrainte exige un type numérique pour la variable f. La définition de la variable contient une expression numérique, mais comme une instruction SET est utilisée, la définition est évaluée en tant que texte.
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.
Le script de chargement contient :
Une instruction Constrain pour spécifier que la définition de la variable pour g doit avoir le type text.
Une instruction LET définissant la variable g.
Script de chargement
CONSTRAIN g = {"type": "text"};
LET g = 500*2;
Chargez les données.
Le rechargement échoue parce que la contrainte exige un type texte pour la variable g. La définition de la variable contient une expression numérique et une instruction LET est utilisée, ce qui fait que la définition est évaluée en tant que nombre.
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.
Le script de chargement contient :
Une instruction Constrain pour spécifier que la définition de la variable pour h doit avoir le type text.
Une instruction SET définissant la variable h.
Script de chargement
CONSTRAIN h = {"type": "text"};
SET h = 500*2;
Chargez les données.
Le rechargement réussit. Le rechargement exige un type texte pour la variable h. La définition de la variable contient une expression numérique, mais comme une instruction SET est utilisée, la définition est évaluée en tant que texte.
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.
Le script de chargement contient :
Une instruction Constrain pour spécifier que la définition de la variable pour i doit avoir le type number.
Une instruction LET définissant la variable i.
Script de chargement
CONSTRAIN i = {"type": "number"};
LET i = 500*2;
Chargez les données.
Le rechargement réussit. Le rechargement exige un type numérique pour la variable i. La définition de la variable contient une expression numérique et une instruction LET est utilisée, ce qui fait que la définition est évaluée en tant que nombre.
Exemples - Contraintes multiples
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.
Le script de chargement contient :
Une instruction Constrain pour spécifier que la définition de la variable pour j doit être en 1 et 5.
Le rechargement réussit. La variable f est évaluée à 2, ce qui est dans la fourchette acceptable.
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.
Le script de chargement contient :
Une instruction Constrain permettant à la variable d'être texte ou numérique, tant qu'il s'agit d'une des valeurs acceptables.
Une instruction LET définissant la variable k.
Script de chargement
CONSTRAIN k = {"valuestext": ["abc","def","ghi"], "valuesnum": [0,1,3,5]};
LET k = 'def';
Chargez les données.
Le rechargement réussit. La valeur de la variable k se trouve dans la liste des valeurs acceptables. De même, si vous spécifiez k comme étant 3, la recharge sera réussie.
Exemple - Résoudre les conflits de définition de variables
Vue d'ensemble
Cet exemple montre comment des conflits de définition de variables peuvent survenir lors de l'ajout de contraintes pour une variable qui a déjà été définie dans l'application lors d'un chargement précédent.
Script de chargement 1 : définition d'une variable de script
Ouvrez la console Éditeur de chargement de données. Ajoutez le script suivant :
LET vConflictExample = 'Department C';
Chargez les données. Le rechargement a réussi. La variable vConflictExample a été créée dans l'application en tant que variable de script.
Script de chargement 2 : tentative de définition d'une contrainte sur une variable de script chargée précédemment
Supprimez le script de chargement 1. Ajoutez le script suivant :
CONSTRAIN vConflictExample = {"type": "number"};
LET vConflictExample = 123;
Chargez les données.
Le rechargement échoue avec une erreur de contrainte, même si la nouvelle contrainte et la définition de la valeur sont compatibles. Cela est dû au fait que le script de chargement 1 a déjà chargé la variable dans l'application, avec une valeur texte, et que cette valeur est toujours présente dans l'application. Pour résoudre ce problème, nous devons réinitialiser la contrainte et la définition de la variable. Voir le script de chargement 3.
Script de chargement 3 : réinitialisation des définitions des contraintes et des valeurs
Supprimez le script de chargement 2. Ajoutez le script suivant :
Le rechargement réussit. Le script ci-dessus peut être décomposé en trois parties, chacune séparée par des lignes vides :
La première partie réinitialise la définition des contraintes et des valeurs pour vConflictExample. Cette opération supprime la définition qui a été chargée dans l'application avec le script de chargement 1.
La deuxième partie réapplique les nouvelles définitions de contraintes et de valeurs qui ont échoué dans le script de chargement 2.
La troisième partie ajoute des données fictives simplement pour que nous puissions ouvrir le mode feuille et inspecter la valeur de la variable (voir ci-dessous).
Ouvrez le mode feuille en mode édition et ouvrez la boîte de dialogue Variables. Nous constatons que la variable vConflictExample a été créée avec succès.
La boîte de dialogue Variables dans le mode feuille montre que le conflit de définition de variable pour vConflictExample a été résolu.
Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – faites-le-nous savoir.