Tester
Teste si une entité répond à une ou plusieurs conditions et dirige l'entité vers un port différent en fonction du résultat.
Cas d'utilisations typiques
- Effectuer des tests de qualité sur les données
- Diviser les entités en deux flux selon un test
- Isoler un sous-jeu d'entités selon un test
Comment fonctionne-t-il ?
Le Testeur accepte toute entité. Il évalue chaque entité selon un ou plusieurs tests définis par l'utilisateur et fait ressortir les entités remplissant les conditions par le port Passed. Les autres ressortent par le port Failed.
Les tests sont construits comme une série de clauses de test, qui évaluent des valeurs ou des expressions sur la base d'un large éventail d'opérateurs et de types de tests disponibles. Les clauses de test sont reliées par la logique - des combinaisons de AND (et), OR (ou) et NOT (n'est pas), avec des parenthèses pour définir l'ordre d'évaluation.
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 |
Trafic | 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 accolades - [ ] - 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 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 Expression régulière 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.
Exemples
Dans cet exemple, nous commençons avec un jeu de données de food trucks et nous voulons identifier tous les enregistrements pour lesquels le nom, l'attribut Business Name, manque.
Les entités sont dirigées vers Tester.
Dans les paramètres, nous configurons un test. La Valeur à gauche est définie sur l'attribut BUSINESS_NAME et l'Opérateur vaut L'attribut à une valeur.
Comme il n'y a qu'un test, le Critère de réussite n'est pas pertinent.
Aucune Valeur à droite n'est requise, puisqu'on recherche simplement l'existence d'une valeur.
Les entités qui échouent le test ressortent via le port Failed et peuvent être envoyées ailleurs.
Dans cet exemple, nous partons d'un jeu de données de camions de restauration, et souhaitons tester ceux qui servent de la nourriture mexicaine. Les entités sont acheminées vers un testeur.
Dans la fenêtre, nous créons deux tests utilisant l'attribut DESCRIPTION comme Valeur à gauche.
Le premier test recherche une correspondance exacte - toute entité dont la DESCRIPTION est Cuisine mexicaine. Le deuxième test est moins strict - il recherche toutes les valeurs qui commencent par Tacos.
Le connecteur Logique est OR (OU) - signifiant que les entités qui correspondent à l'un de ces tests ressortiront par le port Passed.
Méthode de comparaison vaut Insensible à la casse, ce qui s'applique aux deux clauses.
Quatre entités répondent à au moins l'un des tests.
Dans cet exemple, nous commençons avec un jeu de données sur les parcs de la ville. Nous allons les tester pour trouver des parcs à chiens d'une certaine taille minimale, dans deux quartiers spécifiques. Les entités sont acheminées vers un Tester.
Dans la fenêtre, nous ajoutons quatre clauses de test :
- Dog Park: Y
- Area est plus grand que 40000 (mètres carrés, en unités terrain - utilisant la fonction @Area() pour évaluer la géométrie).
- Neighborhood Name est Strathcona
- Neighborhood Name est Fairview
Nous avons deux choix pour le nom du quartier, nous utilisons donc une Expression composite pour décrire les conditions de test que nous voulons :
- 1 AND 2 AND (3 OR 4) signifie (notez que les numéros indiquent les numéros de lignes dans le tableau Clauses de test) :
- Cela doit être un parc pour chiens (règle 1) ET ;
- Il doit être plus grand que 40,000 m² (règle 2), ET ;
- Il doit être dans Strathcona (règle 3) OU Fairview (règle 4).
Les connecteurs de logique et parenthèses peuvent être sélectionnés dans la colonne Logique ou entrés directement en utilisant le bouton Editer.
Deux parcs répondent à ces critères.
Notes
- En raison du traitement par lots, les entités peuvent apparaître en sortie par morceaux. Bien que l'ordre des entités à partir d'un seul port de sortie reste intact, lorsque des blocs d'entités sont sortis par les ports Passed et Failed, des résultats inattendus peuvent se produire dans les traitements qui s'appuient sur l'ordre des entités à partir de ports de sortie joints. Dans ce cas, nous vous recommandons de ne pas mettre à niveau le Tester vers sa version 2019.1 ou ultérieure, ou de réviser vos traitements afin qu'ils ne reposent pas sur l'ordonnancement des entités à partir de ports de sortie joints. L'ordre des entités peut être spécifié avec le paramètre Avancé > Préserver l'ordre des entités.
- Si vous avez plusieurs Transformers Tester en séquence, pensez à utiliser le TestFilter à la place. Ce Transformer vous permet de créer une série de tests avec des ports de sortie nommés pour chaque résultat.
- Notez que les opérations de test sont des comparaisons lexicales et ne prennent pas en compte la lecture des données.
- Lorsque vous filtrez un sous-ensemble d'entités, tenez compte de la logique du ou des tests lorsque vous choisissez un port de sortie. Par exemple, pour supprimer tous les parcs à chiens d'une liste de parcs, vous pouvez soit.. :
- Définir DogParks=Y et connecter le port Failed, ou
- Définir DogParks=N et connecter le port Passed
Configuration
Ports d'entrée
Entités à tester.
Ports de sortie
Si l'entité réussit selon la configuration du test, elle ressort via le port Passed.
Si l'entité échoue à remplir les conditions du test, elle ressort via le port Failed.
Paramètres
Voir Créer des clauses de test ci-dessus pour plus de détails.
Logique |
Détermine comment les clauses sont évaluées dans un test composite. Notez que les changements faits en utilisant la fonction Editer du paramètre Expression composite seront répercutés dans cette colonne une fois qu'ils seront Appliqués (y compris les parenthèses).
|
||||||||||||
Valeur à gauche |
La Valeur à gauche peut être la valeur d'un attribut, d'une expression, une constante littérale, un paramètre publié ou une valeur calculée qui est une combinaison des précédents. S'il s'agit d'une expression ou fonction calculée, elle sera exécuté pour chaque entité et le résultat peut être utilisé pour le test. |
||||||||||||
Opérateur |
Sélectionnez le type de test à effectuer. Les options comprennent :
|
||||||||||||
Valeur à droite |
Entrez les valeurs de comparaison ou informations de configuration supplémentaires requises pour le test sélectionné. Selon l'opérateur choisi, une liste de choix ou un bouton ... permettant d'accéder à une fenêtre supplémentaire avec les paramètres corrects peut devenir disponible pour assister à la saisie de valeurs. |
||||||||||||
Mode |
Si requis, spécifie une méthode pour évaluer les valeurs. Cette colonne est seulement disponible quand la Méthode de comparaison vaut Spécifier par test. Voir Méthode de comparaison ci-dessous pour les options disponibles. |
||||||||||||
Méthode de comparaison |
Spécifier une méthode pour évaluer les valeurs. Ce choix sera appliqué à tous les tests, à moins que Spécifier par test ne soit sélectionné, activant la colonne Mode dans les Clauses de test.
Si vous savez que vos données sont des chaînes de caractères, vous devez définir le mode sur Sensibilité (ou Insensibilité). De cette façon, FME ne perd pas de temps à déterminer pour chaque entité si les données sont représentables sous forme de nombre, mais peut simplement effectuer la comparaison de chaîne immédiatement. |
||||||||||||
Expression composite |
Activé quand plusieurs clauses de test sont créées. Saisissez ou modifiez une expression de test qui définit les critères à remplir pour qu'une entité ressorte par le port Passed. Si des modifications sont apportées ici, elles seront reflétées dans la colonne Logique du tableau Clauses de test lorsque le bouton Appliquer sera utilisé pour enregistrer les modifications. Inversement, les modifications apportées en sélectionnant les options Logique seront reflétées ici. Les clauses de test sont désignées par leur numéro, dans l'ordre indiqué dans le tableau des clauses de test. Les clauses peuvent être reliées par AND (et), OR (ou) et NOT (n'est- pas), avec des parenthèses. Exemple : ((1 AND 2) OR 3) Interprétation : Clause 1 AND Clause 2 doit être vraie, OU Clause 3 doit être vrai. Voir l'exemple composite précédent. |
Lors des comparaisons, les valeurs null, missing et empty string sont toutes évaluées à empty string. Elles sont donc considérées comme égales dans le contexte des opérateurs de comparaison. En outre, l'ordre de comparaison suivant est respecté :
- Null, manquant, chaîne vide < autre valeurs
Dans le mode automatique, tous les opérateurs sont sensible à la casse sauf Comme, Contient, Commence par, et Finit par.
Conserver l'ordre des entités |
Ce paramètre contrôle l'ordre dans lequel les entités quittent un Transformer. Lorsqu'un Transformer a plus d'un port de sortie, les entités sortent généralement d'un port à la fois. Parfois, il peut être utile de garder l'ordre dans lequel les entités sont arrivées, en passant d'un port à l'autre si nécessaire. Cela permet de préserver l'ordre des entités, mais au prix d'une perte potentielle d'efficacité du traitement. Sélectionner une méthode pour l'ordre des entités :
|
Éditer les paramètres des Transformers
À l'aide d'un ensemble d'options de menu, les paramètres du Transformer peuvent être attribués en faisant référence à d'autres éléments de traitement. Des fonctions plus avancées, telles qu'un éditeur avancé et un éditeur arithmétique, sont également disponibles dans certains Transformers. Pour accéder à un menu de ces options, cliquez sur à côté du paramètre applicable. Pour plus d'informations, voir Options de menus et paramètres de Transformer.
Définir les valeurs
Il existe plusieurs façons de définir une valeur à utiliser dans un Transformer. La plus simple est de simplement taper une valeur ou une chaîne de caractères, qui peut inclure des fonctions de différents types comme des références d'attributs, des fonctions mathématiques et de chaînes de caractères, et des paramètres de traitement. Il existe un certain nombre d'outils et de raccourcis qui peuvent aider à construire des valeurs, généralement disponibles dans le menu contextuel déroulant adjacent au champ de valeur.
Utilisation de l'éditeur de texte
L'éditeur de texte fournit un moyen efficace de construire des chaînes de textes (dont les expressions régulières) à partir de données source diverses, telles que des attributs, des paramètres et des constantes, et le résultat est directement utilisé dans le paramètre.
Utilisation de l'éditeur arithmétique
L'éditeur arithmétique fournit un moyen simple de construire des expressions mathématiques à partir de plusieurs données source, telles que des attributs et des fonctions, et le résultat est directement utilisé dans un paramètre.
Valeur conditionnelle
Définit des valeurs selon un ou plusieurs tests.
Fenêtre de définition de conditions
Contenu
Les expressions et chaînes de caractères peuvent inclure des fonctions, caractères, paramètres et plus.
Lors du paramétrage des valeurs - qu'elles soient entrées directement dans un paramètre ou construites en utilisant l'un des éditeurs - les chaînes de caractères et les expressions contenant des fonctions Chaîne de caractères, Math, Date et heure ou Entité FME auront ces fonctions évaluées. Par conséquent, les noms de ces fonctions (sous la forme @<nom_de_fonction>) ne doivent pas être utilisés comme valeurs littérales de chaîne de caractères.
Ces fonctions manipulent les chaînes de caractères. | |
Caractères spéciaux |
Un ensemble de caractères de contrôle est disponible dans l'éditeur de texte. |
Plusieurs fonctions sont disponibles dans les deux éditeurs. | |
Fonctions Date/heure | Les fonctions de dates et heures sont disponibles dans l'Editeur texte. |
Ces opérateur sont disponibles dans l'éditeur arithmétique. | |
Elles retournent des valeurs spécifiques aux entités. | |
Les paramètres FME et spécifiques au traitement peuvent être utilisés. | |
Créer et modifier un paramètre publié | Créer ses propres paramètres éditables. |
Options - Tables
Les Transformers avec des paramètres de style table possèdent des outils additionnels pour remplir et manipuler des valeurs.
Réordonner
|
Activé une fois que vous avez cliqué sur un élément de ligne. Les choix comprennent :
|
Couper, Copier et Coller
|
Activé une fois que vous avez cliqué sur un élément de ligne. Les choix comprennent :
Copier, copier et coller peuvent être utilisés au sein d'un Transformer ou entre Transfromers. |
Filtre
|
Commencez à taper une chaîne de caractères, et la matrice n'affichera que les lignes correspondant à ces caractères. Recherche dans toutes les colonnes. Cela n'affecte que l'affichage des attributs dans le Transformer - cela ne change pas les attributs qui sont sortis. |
Importer
|
Le bouton d'import remplit la table avec un jeu de nouveaux attributs lus depuis un jeu de données. L'application spécifique varie selon les Transformers. |
Réinitialiser/Rafraîchir
|
Réinitialise la table à son état initial, et peut fournir des options additionnelles pour supprimer des entrées invalides. Le comportement varie d'un Transformer à l'autre. |
Note : Tous les outils ne sont pas disponibles dans tous les Transformers.
Références
Comportement |
|
Stockage des entités |
Non |
Dépendances | Aucun |
Alias | |
Historique | Ce transformer remplace les anciens Transformers AttributeTester et GenericTester. |
FME Community
FME Community est l'endroit où trouver des démos, des tutoriaux, des articles, des FAQ et bien plus encore. Obtenez des réponses à vos questions, apprenez des autres utilisateurs et suggérez, votez et commentez de nouvelles entités.
Voir tous les résultats à propos de ce Transformer sur FME Community.
Les exemples peuvent contenir des informations sous licence Open Government - Vancouver et/ou Open Government - Canada.