ExpressionEvaluator
Effectue un calcul mathématique sur une expression composée de fonctions d'entité FME, de fonctions de chaîne, de fonctions mathématiques et d'opérateurs mathématiques. Les opérandes et les arguments de fonction sont constitués d'attributs de l'entité d'entrée, de littéraux constants, de paramètres publiés et privés, ainsi que de fonctions et d'opérateurs. Vous pouvez utiliser l'interface graphique pour configurer une expression, mais vous pouvez également modifier une expression manuellement. Les résultats de l'expression sont stockés dans les attributs spécifiés par l'utilisateur.
Il y a deux principales utilisations de ExpressionEvaluator :
- Appliquer un expression sur un attribut
- Définit Mode d'évaluation sur soit Créer un nouvel attribut soit Ecraser des attributs existants mais écrase seulement un attribut.
- l'expression peut utiliser la fonction @Value() mais n'utilise pas la fonction @CurrentAttribute().
- Par exemple, si vous voulez ajouter 1 à la valeur d'un attribut, utilisez l'expression @Value(attr) + 1, définissez la méthode de calcul à Ecraser les attributs existants, et définissez les attributs à écraser à attr.
- Appliquer un expression sur plusieurs attributs
- définit le Mode d'évaluation sur Ecraser les attributs existants et sélectionne seulement les attributs qui seront écrasés par de nouvelles valeurs. Les attributs non sélectionnés conserveront leurs valeurs d'origine.
- l'expression peut utiliser la fonction @CurrentAttribute() mais n'utilisera généralement pas la fonction @Value().
- Par exemple, si vous souhaitez ajouter 1 aux valeurs de quelques attributs, utilisez l'expression @CurrentAttribute() + 1, définissez la Méthode de calcul à Ecraser les attributs existants, et sélectionnez les attributs.
Les opérateurs pris en charge sont un sous-ensemble des opérateurs autorisés dans les expressions C. Ils ont la même signification et la même préséance que les opérateurs C correspondants, à une exception notable près : ils supportent les nuls numériques.
Les expressions sont censées produire des résultats numériques. FME prend en charge les nuls numériques, qui permettent aux expressions de renvoyer un résultat nul. Par exemple, l'expression 8.2 + 6 renvoie 14.2 , alors que l'expression @Value(nullAttr) * 1 renvoie null.
• fme_expression_warnings{}.attrName
• fme_expression_warnings{}.message
• fme_expression_warnings{}.transformerName
Dans l'ExpressionEvaluator, les attributs null, missing et empty string sont tous considérés comme nuls. Ainsi, @Value(attr) * 1 aura pour résultat null si attr n'est pas présent dans l'entité ou est une chaîne vide.
Configuration
Paramètres
Méthode de calcul |
Choisir Créer un nouvel attribut pour stocker le résultat de la concaténation dans un nouvel attribut. Choisissez Écraser les attributs existants pour évaluer l'expression spécifiée une fois par attribut sélectionné. Le résultat de l'évaluation sera remis dans l'attribut. |
||||
Attributs à écraser |
Ce paramètre permet d'évaluer la même expression, une fois par attribut sélectionné. Pour chaque attribut spécifié, le résultat de l'expression sera stocké dans cet attribut. Si l'expression nécessite la valeur de l'attribut actuel, récupérez-la à l'aide de la fonction @CurrentAttribute(). Par exemple, si l'entité entrante possède des attributs X et Y et que nous souhaitons les incrémenter d'une unité, sélectionnez les deux attributs et définissez l'expression sur @CurrentAttribute() + 1. Cela donnera à l'attribut X la valeur X+1 et à Y la valeur Y+1. Attention L'ordre d'évaluation n'est pas garanti. Si vous écrasez attr, @Value(attr) ne doit pas être utilisé.
|
||||
Avancé : Gestion des valeurs d'attribut |
|
Result |
Nommer l'attribut qui contiendra le résultat. |
Une expression consiste en une combinaison d'opérateurs et d'opérandes, de fonctions et d'arguments, et de parenthèses. Les espaces peuvent être utilisés entre les opérandes, les opérateurs, les fonctions et les parenthèses, mais sont ignorés par le processeur d'expression.
Les opérandes peuvent être spécifiés de la façon suivante :
- En tant que valeur numérique constante, entière ou à virgule flottante.
- En tant que valeur d'un attribut d'entité FME, utilisant les standards et les notations @Value() ou @CurrentAttribute(). La valeur de l'attribut est utilisée comme opérande ou argument.
- Comme une entité FME ou une fonction mathématique, telle que @Area() ou @sin(1). La fonction est évaluée et le résultat est utilisé comme opérande ou argument.
Les valeurs numériques peuvent être spécifiées en décimales, comme 123 ou 12.3, en octal si les deux premiers caractères de l'opérande sont 0o (zéro suivi de la lettre o) ou en hexadécimal si les deux premiers caractères de l'opérante sont 0x.
Les nombres à virgule flottante peuvent être spécifiés de n'importe quelle manière acceptée par un compilateur C conforme à la norme ANSI, sauf que les suffixes "f", "F", "l" et "L" ne sont pas autorisés. Par exemple, tous les nombres suivants sont des nombres à virgule flottante valides : 2.1, 3., 6e4, 7.91e+16. Si aucune interprétation numérique n'est possible, un opérande est considéré comme nul.
Pour plus d'informations sur les éléments de l'éditeur GUI, voir Éditeur arithmétique.
Fonctions d'entités
Pour plus d'informations, consulter la section Fonctions d'entités.
Fonctions chaînes de caractères
Pour plus d'information, consulter la section Fonctions chaînes de caractères.
Fonctions mathématiques
Pour plus d'information consulter la section Fonctions mathématiques.
Opérateurs mathématiques
Pour plus d'information consulter la section Opérateurs mathématiques.
Exemples
FME Community présente un bon exemple d'utilisation d'ExpressionEvaluator.
Transformers liés
Si vous paramétrez plus d'un attribut, pensez à utiliser AttributeCreator qui comporte les mêmes fonctionnalité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.
Implémentation
Les opérateurs mathématiques sont basés sur les commandes Tool Command Language TCL.1
arithmetic
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.