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é Gauche (Left) correspond à une entité Droite (Right) lorsque chaque paire de clés spécifiée dans la table Jointure a la même valeur. Lorsqu'une correspondance se produit, les attributs/géométries de l'entité gauche et de l'entité droite sont combinés et l'entité combinée est envoyée au 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 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 à un : Si chaque entité Gauche a une seule correspondance parmi les entités Droite (par exemple, une entité ponctuelle seule est mappée à une table d'adresses via un clé d'ID adresses unique), il s'agit d'une correspondance 1:1 et cela produit une seule entité Joined. |
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 seul enregistrement d'adresse est apparié à une liste d'applications de tournées pour cette adresse), il s'agit d'une correspond 1:M (un à un plusieurs) et cela produit une entité Joined pour chaque correspondance. |
1 Gauche correspond à 10 Droite : 10 entités Joined en sortie |
M:1 |
Plusieurs à un : Si plusieurs entités Gauche correspondent à une seule entré d'entité Droite (par exemple, un nombre d'adresse correspondant au même bureau de recensement via un champ de code postal), il s'agit d'une correspondance M:1 (plusieurs à un) et cela produit une entité Joined 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 nombre d'adresses correspondent aux enregistrements de coupures de courant), il s'agit d'une correspondance M:N (plusieurs à plusieurs) et cela produit une entité Joined pour chaque correspondance. |
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 de la Méthode de jointure (Intérieure, Gauche ou Complète). Les modes Gauche et Complet entraînent la sortie de certaines ou de toutes les entités non correspondantes via le port joint, en fonction du mode :
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 Jointure, nous sélectionnons des attributs des noms de rues appropriées pour les entités Gauche et Droite, et ces valeurs seront utilisées comme clés de 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 :
Considérations sur l'utilisation de Regrouper par
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 |
Quand une entité jointe reçoit un attribut avec le même nom (ou un attribut commun) depuis les entités gauche et droite, ceci spécifie quelle valeur doit être préférée lors de la sortie par le port Joined. |
|||||||||||||||
Gestion de la géométrie |
Spécifie quelle géométrie sera utilisée pour les entités jointes. Utiliser la table de gauche : la géométrie depuis le port d'entrée Left sera utilisée et la géométrie depuis le port d'entrée Right sera supprimée. Utiliser la table de droite : la géométrie depuis le port d'entrée Right sera utilisée et la géométrie depuis le port d'entrée Left sera supprimée. Agréger les données de gauche et de droite (forcer les noms uniques) : la géométrie des deux ports d'entrée Left et Right sera préservée et chaque partie de géométrie se verra dotée d'un nom unique.
Exemples d'agrégation de géométries
|
La table de jointure 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
À 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 |
Oui |
Dépendances | Aucun |
Alias | |
Historique |
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.