Fenêtre de définition de conditions
Dans de nombreux Transformers et Writers, les valeurs des attributs peuvent être définies de manière conditionnelle, c'est-à-dire que des valeurs différentes sont attribuées selon que les conditions spécifiées sont remplies ou non.
Comme on le voit ici dans un Transformer AttributeCreator, si Valeur conditionnelle... apparaît dans le menu contextuel lors de la définition d'une valeur, les conditionnels sont disponibles.
Dans la boîte de dialogue Paramètre de définition de condition, nous définissons une ou plusieurs conditions de test et la valeur à attribuer si cette condition est remplie.
Chaque condition de test se compose d'une ou plusieurs clauses de test, qui évaluent des valeurs ou des expressions sur la base d'un large éventail d'opérateurs et de types de test disponibles. Les clauses de test sont reliées par la logique - combinaisons de AND, OR et NOT, avec des parenthèses pour définir l'ordre d'évaluation.
Si le premier test (Si) n'aboutit pas (échec), la condition de test suivante est évaluée (Sinon si), et ainsi de suite jusqu'à ce qu'il ne reste plus aucune condition de test. Si aucune des conditions de test n'est réussie, la valeur finale (Sinon) sera utilisée.
Notez que les opérations de test sont lexicales et ne tiennent pas compte du contexte local.
Créer des clauses de test
Chaque clause est composée d'une valeur à tester, et de la méthode pour la tester. En fonction du type de test, la clause comprendra au minimum une Valeur à gauche et un opérateur. Si l'opérateur choisi a besoin de plus d'informations (par exemple, le test d'un attribut supérieur à une certaine valeur), un champ Valeur à droite est fourni.
Les clauses de test sont créées dans une table et numérotées depuis le haut vers le bas.
Valeur à gauche |
Opérateur |
Valeur à droite |
Mode* |
---|---|---|---|
La valeur ou l'expression à tester | Le type de test à effectuer | La valeur pour comparaison, si requise par l'opérateur | Test les valeurs d'une manière spécifique |
Exemples | |||
Latitude | > | 49.000001 | Automatique |
@Area() | Dans la plage | (1,100) | Numérique |
SnackType | Comme | Kebabs | Sensibilité à la casse |
Traffic | L'attribut est Null (nul) | <Inutilisé> | Automatique |
Count | Le type est | Entier | Automatique |
* Notez que le Mode n'est disponible que pour les tests individuels quand Méthode de comparaison vaut Spécifier par test.
Opérateurs de clauses de test
Ce sont les opérateurs disponibles pour construire des clauses de test. Ils peuvent être utilisés pour tester les valeurs d'attributs, les expressions construites, les constantes et les paramètres publiés.
Notez que (sauf indication contraire) la plupart des opérateurs peuvent être utilisés à la fois avec des valeurs numériques et des chaînes de caractères. Les chaînes de caractères peuvent être comparées avec les opérateurs =, !=, <, >, <=, et >=, et sont évaluées par leurs codes de caractères, ainsi A < B.
Opérateur |
Description |
Configuration de la valeur à droite |
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
= | Egale à | Entrez une valeur pour comparaison. | ||||||||||||||||
!= | N'est pas égal à | Entrez une valeur pour comparaison. | ||||||||||||||||
< | Inférieur à | Entrez une valeur pour comparaison. | ||||||||||||||||
> | Supérieur à | Entrez une valeur pour comparaison. | ||||||||||||||||
<= | Inférieur ou égal à | Entrez une valeur pour comparaison. | ||||||||||||||||
>= | Plus grand ou égal à | Entrez une valeur pour comparaison. | ||||||||||||||||
Dans la plage |
Teste si la valeur tombe dans une plage numérique spécifiée. Les plages semi-bornées peuvent être définies en laissant la limite soit basse soit haute vierge. |
Les valeurs de plage sont séparées par une virgule et incluses entre accolades. Les crochets - [ ] - indiquent des limites inclusives (supérieur ou égal à, inférieur ou égal à). Les parenthèses - ( ) - indiquent des limites exclusives (supérieur ou inférieur à). Exemples de plages valides : (1,9) Supérieur à 1 et inférieur à 9 [1,9] Supérieur ou égal à 1 et inférieur ou égal à 9 (1,9] Supérieur à 1 et inférieur ou égal à 9 (1,) Supérieur à 1 [,9] Inférieur ou égal à 9 Note Cet opérateur n'est pas disponible quand le Mode est défini sur Sensible à la casse ou Insensible à la casse, et ces modes ne sont pas disponibles quand l'opérateur est Dans la plage.
|
||||||||||||||||
In (dans) | Teste si la valeur peut être trouvée dans la liste de plages et valeurs possibles fournie. |
Entrer une combinaison de chaînes séparées par des virgules, valeurs numériques et/ou plages (sous la forme de x-y). Exemple de configuration valide : 1,10,100 1-99 cat cat,dog,cats and dogs dogs,1-9,7 Il est également possible de spécifier des plages de chaînes (par exemple, a-d). Pour tester les valeurs qui contiennent un trait d'union, mettre la valeur entre guillemets : "LL-27", "LL-83". Pour tester des valeurs qui contiennent soit des guillemets simples (') soit doubles ("), balisez-ces valeurs avec les guillemets opposés : "Hôtel de l'Étoile" or 'Dire "Bonjour !"'. |
||||||||||||||||
Comme | Teste si la valeur correspond à un motif de chaîne spécifié. |
Saisissez un modèle de chaîne de caractères. Les caractères génériques sont pris en charge par le symbole du pourcentage (%), plutôt que par l'astérisque (*). En mode Automatique, cet opérateur est insensible à la casse. Cet opérateur n'est pas disponible en mode Numérique. Exemple : Si la Valeur à droite est %bc%. abcd : Réussi bc : Echoué |
||||||||||||||||
Contient | Teste si la Valeur à droite intervient dans la Valeur à gauche. |
Entrez une valeur à tester. En mode Automatique, cet opérateur est insensible à la casse. Cet opérateur n'est pas disponible en mode Numérique. Exemple : Si la Valeur à droite est bc. abcd : Réussi abde: Echoué |
||||||||||||||||
Commence par | Teste si la chaîne de caractères de la Valeur à gauche débute par la chaîne de la Valeur à droite. |
Entrez une chaîne de caractères à tester. En mode Automatique, cet opérateur est insensible à la casse. Cet opérateur n'est pas disponible en mode Numérique. Exemple : Si la Valeur à droite est Chi. Chiens: Réussi Chats : Echoué |
||||||||||||||||
Finit par | Teste si la chaîne de caractères de la Valeur à gauche finit par la chaîne de la Valeur à droite. |
Entrez une chaîne de caractères à tester. En mode Automatique, cet opérateur est insensible à la casse. Cet opérateur n'est pas disponible en mode Numérique. Exemple : Si la Valeur à droite est ens. Chiens: Réussi Chats : Echoué |
||||||||||||||||
Contient une expression régulière | Teste si la valeur contient une chaîne de caractères qui correspond au motif décrit par l'expression régulière. |
Entrer une expression régulière. L'Editeur d'expressions régulières est disponible via le bouton (...) et peut être utilisé pour construire et tester des expressions. La regex à tester peut représenter une chaîne de caractères à trouver n'importe où dans la valeur, ou peut représenter la valeur entière (en créant une regex assez longue pour représenter la portée de la valeur souhaitée). Exemple : Si l'expression régulière est \d (n'importe quel chiffre) chats: Echoué 9 : Réussi chats82 : Réussi |
||||||||||||||||
Le type est |
Teste si la valeur est compatible avec le Type choisi. Vous pouvez tester plusieurs types en ajoutant des Clauses de test additionnels. |
Sélection du type à tester.
|
||||||||||||||||
Encodé en | Teste si la valeur est encodable dans l'encodage spécifié sans perte de données. |
Sélectionner dans une liste d'encodages standard. Exemples d'encodages :
|
||||||||||||||||
L'attribut a une valeur | Teste que l'attribut a une valeur et n'est ni nul, ni absent, ni vide. | <Inutilisé> | ||||||||||||||||
L'attribut est Null (nul) | Teste si l'attribut à une valeur null. |
<Inutilisé> |
||||||||||||||||
L'attribut est une chaîne vide | Teste si la valeur est une chaîne vide. | <Inutilisé> | ||||||||||||||||
L'attribut est manquant | Teste si l'attribut est absent de l'entité. | <Inutilisé> |
Clauses et Valeurs mises en cache
Si la mise en cache des données est activée, les attributs des entités peuvent être visualisées pour compléter les clauses du test.
Comme illustré ici dans le Tester, si la valeur de gauche a été définie sur une valeur d'attribut et que les entités ont été mises en cache, le menu contextuel donne accès aux valeurs disponibles dans ces entités. S'il n'y a que quelques choix, ils seront présentés dans un sous-menu.
Si un grand nombre de choix est possible, les valeurs sont affichées dans la fenêtre Sélectionner une valeur dans laquelle les valeurs peuvent être triées et filtrées via l'option Filtre.
Connecter des Clauses de test : Logique
Plusieurs clauses de tests sont connectées avec Logique, en utilisant AND , OR et NOT en plus des parenthèses pour spécifier comment les tests sont évalués pour déterminer la réussite ou l'échec.
Les connecteurs logiques peuvent être édités en sélectionnant des options dans la colonne Logique de la table Clauses de test ou peuvent être édités directement en utilisant le bouton Editer du paramètre Expression composite.
Exemple : assigner plusieurs valeurs d'attributs avec des valeurs conditionnelles
Dans cet exemple, nous allons créer un nouvel attribut et lui attribuer une valeur en fonction d'une autre valeur. Les données d'origine contiennent des rues avec deux attributs. Ils sont acheminés dans un AttributeCreator.
Dans le dialogue des paramètres, des valeurs conditionnelles ont été définies, indiquées par 7 Valeurs possibles. On peut les revoir via le bouton ellipse ou le menu contextuel.
Six conditions de test ont été créées, attribuant un code au nouvel attribut USE_CODE, en fonction de la valeur de l'attributUSE existant. Si une valeur USE est trouvée qui correspond à l'un de ces tests, elle recevra la valeur USE_CODE UN.
Les entités en sortie ont maintenant des attributs conditionnels pour le nouvel attribut USE_CODE.