Transformers FME: 2025.0
Transformers FME: 2025.0
FeatureJoiner
Joins des entités en combinant les attributs et/ou la géométrie d'entités basées sur des valeurs d'attributs clés communs. Effectue des jointures gauches, internes et complètes.
Cas d'utilisations typiques
- Effectue des jointures simples entre entités en utilisant un (ou des) valeur(s) d'un attribut comme clé(s).
Comment fonctionne-t-il ?
FeatureJoiner effectue de simples opérations de jointure, à l'instar d'une jointure SQL, sans avoir besoin de savoir construire une requête SQL.
Il possède deux ports d'entrée -Left et Right- où deux flux d'entités à joindre sont acheminés vers le Transformer. Un ou plusieurs attributs sont sélectionnés pour être joints.
Une entité Left correspond à une entité Right quand chaque paire de clés spécifiées dans la table Jointure a la même valeur. Quand il y a correspondance, les attributs et géométries des entités Left et Right sont combinés dans une nouvelle entité ressortant par le port Joined.
Notez que toutes les entités d'entrée doivent avoir le même système de coordonnées, à la fois à Left et à Right.
Méthode de jointure
Le paramètre Méthode de jointure définit le type de jointure à effectuer, déterminant quelles entités ressortiront via le port de sortie Joined.
Méthode de jointure |
Port de sortie Joined |
|
---|---|---|
Inner (Interne) |
|
![]() |
Left (Gauche) |
|
![]() |
Complète (Full) |
|
![]() |
Comportement de jointure
Une entité jointe est produite chaque fois qu'une entité Left (gauche) est mise en correspondance avec une entité Right (droite) par le biais de ses clés. Le nombre d'entités de sortie produites dépendra de la correspondance ou non de plusieurs entités gauche et droite.
Le type de jointure est déterminé par la nature des données utilisées (il ne s'agit pas d'un paramètre). Tous ces types de jointures peuvent être produits par l'une des Méthodes de jointure (Intérieure, Gauche ou Complète).
Cardinalité |
Description |
Sortie (présumant 1 valeur-clé) |
---|---|---|
1:1 |
Un pour un : si chaque entité gauche a une correspondance unique parmi les entités droite (par exemple, une entité ponctuelle est mise en correspondance avec une table d'adresses via une clé d'identification d'adresse unique), il s'agit d'une correspondance 1:1 qui produit une entité Joined unique en sortie. |
1 Gauche correspond à 1 Droite : 1 entité Joined en sortie |
1:M |
Un à plusieurs : Si chaque entité gauche a plusieurs correspondances parmi les entités droite (par exemple, un enregistrement d'adresse unique est mis en correspondance avec une liste de demandes de permis de construire pour cette adresse), il s'agit d'une correspondance 1:M (une à plusieurs) qui produit une entité Joined en sortie pour chaque correspondance qui se produit. |
1 Gauche correspond à 10 Droite : 10 entités Joined en sortie |
M:1 |
Plusieurs à un : si plusieurs entités gauche correspondent à un seul enregistrement d'entité droite (par exemple, un certain nombre d'adresses correspondent aux mêmes données de recensement via un champ de code postal), il s'agit d'une correspondance M:1 (plusieurs à un) et une entité Joined est produite pour chaque correspondance. |
10 Gauche correspondent à 1 Droite : 10 entités Joined en sortie |
M:N |
Plusieurs à plusieurs : Si plusieurs entités gauche correspondent à plusieurs entités droite (par exemple, un certain nombre d'adresses correspondent à un certain nombre d'enregistrements de pannes d'électricité), il s'agit d'une correspondance M:N (plusieurs à plusieurs) qui produit une entité Joined pour chaque correspondance qui se produit. |
10 Gauche correspondent à 10 Droite : 100 entités Joined en sortie* *Quand toutes les entités ont des valeurs clés identiques - toutes les Gauche correspondent à toutes les Droite. |
Entités sans correspondance
Les entités (gauche et droite) qui ne trouvent pas de correspondance sont traitées en fonction du mode de jointure (intérieur, gauche ou complet). Les modes Gauche et Complet entraînent la sortie d'une partie ou de la totalité des entités non appariées via le port Joined, en fonction du mode de jointure :
Méthode de jointure |
Port de sortie des entités Gauche Unmatched |
Port de sortie des entités Droite Unamtched |
---|---|---|
Interne (Inner) | UnjoinedLeft | UnjoinedRight |
Gauche (Left) | Joined | UnjoinedRight |
Complète (Full) | Joined | Joined |
Exemples

Dans cet exemple, nous disposons d'un petit jeu de données de casernes de pompiers, qui ont une adresse municipale, mais pas d'adresse postale complète. Le FeatureJoiner va effectuer une jointure avec un jeu de données d'adresses et fusionner ces attributs avec les casernes de pompiers.
Les casernes sont connectées au port d'entré Left et le jeu d'adresses postales au port Right.
Dans la boîte de dialogue des paramètres, la Méthode de jointure est définie sur Intérieure. Ainsi, seules les entités qui ont trouvé une correspondance seront produites. Les adresses inutilisées ne seront pas incluses dans la sortie des entités jointes, ni les casernes de pompiers qui ne trouvent pas de correspondance d'adresse postale.
Dans la table de Jointure, nous sélectionnons les attributs d'adresse de rue appropriés pour les entités de gauche et de droite, et ces valeurs seront utilisées comme clé pour la jointure.
En observant les résultats du port de sortie Joined, vous pouvez voir que les attributs des entités d'adresses postales ont été ajoutées aux casernes.
Notes
- FeatureJoiner et FeatureMerger :
- Si les conditions de jointure sont simples, FeatureJoiner donnera de meilleures performances
- Si les conditions de jointures sont complexes (comme la construction de clés, l'utilisation d'expressions, la résolution de conflits de nommage...), privilégiez FeatureMerger.
- Si vous souhaitez seulement avoir une entité jointe, quel que soit le nombre de jointures (une jointure 1:M produit 1 entité avec une liste de jointures plutôt qu'1 entité pour chaque jointure que fait FeatureJoiner), privilégiez FeatureMerger.
- FeatureJoiner n'effectue pas toutes les opérations avancées de création de listes ou de gestion de géométries, tel que le fait FeatureMerger, mais il est possible d'utiliser d'autres Transformers en complément.
- FeatureMerger peut être capable de joindre des entités avec des systèmes de coordonnées différents.
- Pour des jointures complexes utilisant la syntaxe SQL, ou plus de deux flux d'entités en entrée, privilégiez plutôt InlineQuerier.
- Si les entités d'entrée ne sont pas toutes dans le même système de coordonnées, les Transformers CoordinateSystemSetter, Reprojector et les Transformers connexes peuvent être utiles.
Choisir une méthode de jointure d'entités
De nombreux Transformers peuvent effectuer des jointures de données sur la base d'attributs, d'expressions et/ou de géométries correspondants. Lorsque vous en choisissez un pour une tâche de jointure spécifique, vous devez prendre en compte la complexité de la jointure, le format des données, l'indexation, la gestion des conflits et les résultats souhaités. Certains Transformers utilisent la syntaxe SQL, d'autres accèdent directement aux bases de données externes. Ils peuvent ou non prendre en charge la lecture et la création d'attributs de liste.
En général, le choix de la méthode la plus spécifique à la tâche à accomplir permet d'obtenir des résultats optimaux en termes de performances. S'il existe plus d'une façon de procéder (ce qui est souvent le cas), il peut être utile de consacrer du temps à tester les performances des autres méthodes. Les performances peuvent varier considérablement selon l'existence d'index clés lors de la lecture de tables externes (par opposition aux entités déjà présentes dans le traitement).

Transformer |
Correspondance selon |
Utilisation de requêtes SQL |
Création de liste |
Type en entrée |
A noter |
Description |
---|---|---|---|---|---|---|
FeatureJoiner | Attributs | Non | Non | Entités |
|
Joint les entités en combinant les attributs et/ou géométries d'entités en fonction de valeurs d'un attribut clé. Effectue l'équivalent des jointures SQL Inner, Left et Full. |
FeatureMerger | Attributs | Non | Oui | Entités |
|
Fusionne les attributs et/ou géométries d'un jeu d'entités en un autre jeu d'entités en fonction de la correspondance de valeurs clés d'attributs et d'expressions. |
ListBasedFeatureMerger | Attribut de liste vers attribut seul | Non | Oui | Entités |
|
Fusionne les attributs et/ou géométries d'un jeu d'entités en un autre jeu d'entités en fonction de la correspondance de valeurs d'un attribut de liste avec des valeurs de clés d'attributs et d'expressions. |
InlineQuerier | Requête SQL | Oui | Non | Entités |
|
Crée un ensemble de tables de base de données SQLite pour les entités en entrée, exécute des requêtes SQL sur elles et génère les résultats en tant qu'entités. |
SQLCreator | Requête SQL | Oui | Non | Base de données externe |
|
Génère des entités FME à partir des résultats d'une requête SQL exécutée une fois dans une base de données. Une entité FME est créée pour chaque ligne des résultats de la requête SQL. |
SQLExecutor | Requête SQL | Oui | Non | Base de données externe |
|
Exécute des requêtes SQL contre une base de données. Une requête est envoyée à la base de données pour chaque entité qui entre dans le Transformer. Les entités initiales et les résultats de la requête peuvent être édités en tant qu'entités. |
DatabaseJoiner | Attributs | Non | Oui | Base de données externe et entités |
|
Joint les attributs d'une table externe aux entités déjà présentes dans un traitement, sur la base d'une ou plusieurs clés communes. Des connaissances en SQL ne sont pas requises. Transformer non bloquant. |
Matcher | Géométrie et/ou attributs | Non | Oui | Entités |
|
Détecte les entités qui correspondent l'une à l'autre. Les entités sont déclarées correspondantes lorsqu'elles ont une géométrie correspondante, des valeurs d'attributs correspondantes, ou les deux. Une liste d'attributs qui doivent différer entre les entités peut également être spécifiée. Si la correspondance se fait uniquement sur des attributs (pas de géométries), utiliser FeatureMerger ou une autre méthode donnera de meilleures performances. |
Configuration
Ports d'entrée

Entités comprises dans la table gauche pour la jointure.

Entités comprises dans la table droite pour la jointure.
Ports de sortie

Le port de sortie Joined varie selon le mode de jointure. Dans tous les cas, elle inclura les entités qui ont trouvé une correspondance et ont été jointes.
Pour les jointures Internes (Inner), aucune entité supplémentaire ne sera ajoutée.
Pour les jointures Gauche (Left), les entités Gauche qui n'ont pas trouvé de correspondance seront inclues.
Pour les jointures Complètes (Full), les entités Gauche et Droite qui n'ont pas trouvé de correspondance seront aussi inclues - cela signifie que toutes les entités ressortiront, qu'elles soient jointes ou non.

Les entités Gauche qui ne trouvent pas de correspondance ressortent ici, si la méthode de jointure est Interne (Inner).
Pour les jointures Gauche et Complète, ce port est inutilisé.

Les entités Droite qui ne trouvent pas de correspondance ressortent ici, si la méthode de jointure est Interne (Inner) ou Gauche (Left).
Pour des jointures Complètes, ce port est inutilisé.

Des entités non valides provenant de n'importe quel port d'entrée. Les entités seront rejetées si une valeur de Jointure est manquante ou nulle.
Gestion des entités rejetées : ce paramètre permet d'interrompre la traduction ou de la poursuivre lorsqu'elle rencontre une entité rejetée. Ce paramètre est disponible à la fois comme option par défaut de FME et comme paramètre de traitement.
Paramètres

Regrouper par |
Les entités d'entrée peuvent être divisées par le paramètre Regrouper par. Si vous choisissez des attributs Regrouper par, les références entre les entités ne seront résolues que si elles partagent une valeur commune pour les attributs sélectionnés. Si vous ne choisissez pas d'attributs Regrouper par, toutes les entités sont traitées ensemble. Si vous avez plus d'une donnée source, il est pratique de les regrouper par _id de sorte à s'assurer que les références soient traitées avec les bonnes entités. Note Ceci est similaire à une clé de jointure supplémentaire, avec la différence subtile que les valeurs de Regrouper par sont autorisées à être nulles/manquantes sans provoquer une entité <Rejected>. Un regroupement null/manquant est traité comme un attribut vide. Une clé nulle/manquante est traitée comme une entité invalide.
|
||||
Traitement des regroupements
|
Sélectionnez le moment du traitement où les groupes sont traités :
![]() Il y a deux raisons typiques d'utiliser Quand le groupe change (avancé). La première concerne les données entrantes qui sont destinées à être traitées en groupes (et qui sont déjà classées ainsi). Dans ce cas, c'est la structure qui dicte l'utilisation de Regrouper par - et non des considérations de performance. La seconde raison possible est le potentiel gain de performances. Les gains de performance sont plus visibles quand les données sont déjà triées (ou lues en utilisant une déclaration SQL ORDER BY) puisque moins de travail est requis de la part de FME. Si les données doivent être ordonnées, elles peuvent être triées dans le traitement (bien que la surcharge de traitement supplémentaire puisse annuler tout gain). Le tri devient plus difficile en fonction du nombre de flux de données. Il peut être quasiment impossible de trier des flux de données multiples dans l'ordre correct, car toutes les entités correspondant à une valeur Regrouper par doivent arriver avant toute entité (de tout type d'entité ou jeu de données) appartenant au groupe suivant. Dans ce cas, l'utilisation de Regrouper par avec Lorsque toutes les entités sont reçues peut être une approche équivalente et plus simple. Note De multiples types d'entités et entités de multiples jeux de données ne vont généralement pas arriver dans l'ordre correct.
Comme pour beaucoup de scénarios, tester différentes approches dans votre traitement avec vos données est le seul moyen sûr d'identifier le gain de performance. |

Méthode de jointure |
Spécifie le type de jointure à effectuer.
Note Pour effectuer une jointure Droite, inversez les connexions entrantes Left et Right et utilisez la Méthode de jointure Gauche (Left).
|
|||||||||||||||
Résolution de conflit d'attribut |
Sélectionnez une préférence pour le choix des attributs lorsqu'une entité jointe reçoit un attribut portant le même nom (ou un attribut commun) des entités de gauche et de droite.
Lorsque le mode de jointure est Complet, la sélection sera privilégiée - les valeurs des attributs des entités non jointes ne seront pas remplacées par des valeurs nulles si la préférence opposée (gauche ou droite) est sélectionnée. Quand le Mode de jointure est Intérieur ou Gauche, la sélection sera utilisée dans tous les cas. |
|||||||||||||||
Gestion de la géométrie |
Spécifie quelle géométrie sera utilisée pour les entités jointes.
Exemples d'agrégation de géométries
|

La table Join On spécifie les attributs à comparer à partir des entrées gauche et droite pour déterminer les entités correspondantes. Une entité gauche correspond à une entité droite lorsque chaque paire de clés spécifiée dans la table Jointure correspond.
Gauche |
Sélectionnez l'attribut du flux d'entités entrant par Left à utiliser comme clé. |
Droite |
Sélectionnez l'attribut du flux d'entités entrant par Right à utiliser comme clé. |
Méthode de comparaison |
Spécifie comment effectuer la comparaison entre les valeurs d'attributs gauche et droite. Si Automatique ou Numérique est spécifié, une tentative sera faite pour convertir les valeurs d'attribut en nombres avant de les comparer. |
Éditer les paramètres des Transformers
Les paramètres du Transformer peuvent être définis en saisissant directement des valeurs, en utilisant des expressions ou en faisant référence à d'autres éléments de l'espace de travail tels que des valeurs d'attributs ou des paramètres utilisateur. Divers éditeurs et menus contextuels sont disponibles pour vous aider. Pour voir ce qui est disponible, cliquez sur à côté du paramètre concerné.

Définir les valeurs
Il existe plusieurs façons de définir une valeur à utiliser dans un Transformer. La plus simple consiste à saisir simplement une valeur ou une chaîne de caractères, qui peut inclure des fonctions de différents types telles que des références d'attributs, des fonctions mathématiques et de chaînes de caractères, et des paramètres traitement.
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. |

Outils de tableau
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.
Pour plus d'information, consulter la section Options des Transformers.
Références
Comportement |
|
Stockage des entités |
Oui |
Dépendances | Aucun |
Alias | |
Historique |
FME Community
FME Community dispose d'une mine de connaissances sur FME, avec plus de 20 000 membres actifs dans le monde entier. Obtenez de l'aide sur FME, partagez vos connaissances et entrez en contact avec des utilisateurs du monde entier.
Voir tous les résultats à propos de ce Transformer sur FME Community.
Examples may contain information licensed under the Open Government Licence – Vancouver, Open Government Licence - British Columbia, and/or Open Government Licence – Canada.