ListBasedFeatureMerger
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.
Utilisations typiques
- Combiner les attributs et/ou géométrie de deux différents flux d'entités selon une valeur d'attribut clé commune ou une expression, où la clé de l'entité receveuse (Demandeur) est stockée dans un attribut de liste.
- Référencer une table de correspondance à un attribut de liste
Comment fonctionne-t-il ?
Le ListBasedFeatureMerger réunit deux flux d'entités sur la base d'un attribut ou d'une expression clé commune, où l'une des valeurs clés est un attribut de liste. Chaque valeur de la liste (pour chaque entité) est prise en compte pour la correspondance, le Transformer testant tour à tour chaque élément de la liste pour trouver une correspondance.
Il reçoit deux des flux d'entités via ses ports d'entrée.
Demandeur : Les Demandeurs sont les entités qui recevront de nouveaux attributs et/ou une nouvelle géométrie. Le demandeur doit avoir un attribut de liste qui sera utilisé comme clé pour joindre le(s) fournisseur(s).
Supplier : les Fournisseurs fournissent des attributs et/ou géométrie à fusionner dans les Demandeurs.
Les correspondances entre le demandeur et le fournisseur sont identifiées selon la configuration des Attributs de jointure dans la boîte de dialogue des paramètres. Une entité du demandeur correspond à une entité du fournisseur lorsqu'une clé de l'attribut de liste de demandeur spécifié (par exemple, list{}.key) correspond au paramètre de l'attribut du fournisseur spécifié (par exemple, supplierKey).
Quand un Demandeur trouve un Fournisseur correspondant, les attributs et/ou géométrie du Fournisseur sont fusionnés avec le Demandeur.
Le paramètre Demandeurs incomplets indique s'il faut ou non fusionner les fournisseurs sur des demandeurs partiellement correspondants lorsque certaines clés de l'attribut de liste des demandeurs n'ont pas de fournisseurs correspondants. Une entité demandeuse est considérée comme entièrement compatible si chaque clé de l'attribut de liste des demandeurs correspond à une ou plusieurs entités du fournisseur.
- Si le Demandeur possède déjà un attribut que possède le Fournisseur, la valeur originale de cet attribut du Demandeur peut être conservée ou surchargée.
- Un même fournisseur peut être utilisé par plusieurs demandeurs.
- Plusieurs fournisseurs peuvent être regroupés en un seul demandeur.
- En cas de conflit de noms d'attributs, vous pouvez choisir quelles valeurs utiliser entre celles des demandeurs et des fournisseurs en utilisant le paramètre Résolution de conflit, et vous pouvez définir comment gérer les valeurs nulles via le paramètre Ignorer les valeurs nulles.
Exemples
Dans cet exemple, nous avons un ensemble de polygones représentant des quartiers. Ils ont un attribut de liste - FoodVendors{} - qui contient des identifiants uniques (KEY) pour les camions de nourriture situés dans la zone. La tâche consiste à fusionner des attributs supplémentaires pour chaque vendeur à partir d'une feuille de calcul.
Dans cette partie d'un traitement, les entités de la zone (avec liste) sont acheminées vers le port Requestor d'un ListBasedFeatureMerger. La feuille de calcul est attachée au port du fournisseur.
Dans les paramètres, les Attributs de jointure sont définis pour faire correspondre l'attribut de liste FoodVendors{}.KEY (Demandeur) avec l'attribut KEY de la feuille de calcul (Fournisseur).
Dans les paramètres de fusion, nous choisissons de fusionner uniquement les attributs et (ce qui est important) de traiter les fournisseurs multiples. Cela permettra de s'assurer que tous les fournisseurs de la liste sont mis en correspondance, et pas seulement le premier rencontré.
Enfin, nous activons la fonction Génération de liste pour créer une nouvelle liste d'attributs sur les entités de sortie. Elle contiendra tous les noms et descriptions d'entreprises correspondants, via les attributs sélectionnés. Notez que le nom de liste saisi - FoodVendors - est le même que celui de la liste existante. Ainsi, les nouveaux attributs seront ajoutés à la liste actuelle (et l'élargiront). Si nous entrons un nom différent ici, un nouvel attribut de liste sera créé.
En inspectant les entités en sortie du port Merged, nous pouvons voir que BUSINESS_NAME et DESCRIPTION ont été ajoutés à la liste FoodVendors{} et peuvent maintenant être utilisés ailleurs dans le projet.
Notes
- ListBasedFeatureMerger est une instance très spécifique de FeatureMerger qui traite le cas où l'attribut Requestor est une liste. Si l'attribut du demandeur n'est PAS une liste, utilisez le FeatureMerger ou une autre méthode de jonction.
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 qui ont un attribut de liste sur lequel effectuer la jointure et qui reçoivent de nouveaux attributs et/ou géométrie depuis les entités connectées au port Fournisseur.
La source des nouveaux attributs et/ou géométrie des entités qui entrent via le port Requestor.
Ports de sortie
Demandeurs qui ont une correspondance avec des Fournisseurs pour toutes les clés dans l'attribut de liste Demandeur spécifié. Seuls les Demandeurs avec une correspondance complète ressortent par ce port.
Ce port était auparavant étiqueté comme Incomplete et a conservé la sémantique de cette étiquette. Ainsi, ce label de port est un raccourci pour 'NotFullyMerged'. Les demandeurs partiellement appariés sont émis sur ce port, et tous les fournisseurs correspondants sont fusionnés sur les entités de sortie si l'option Demandeurs incomplets est définie sur Regrouper les informations sur les fournisseurs. Si une clé de l'attribut Liste de demandeurs est nulle, cette clé ne correspondra à aucun fournisseur et, par conséquent, l'entité Requestor sera produite sur ce port. Par exemple, si les clés de la liste des demandeurs sont :
list{0}.key = 1
list{1}.key = <null>
list{2}.key = 3
et si les fournisseurs avec des clés ayant pour valeur 1, <null>, et 3 et si Demandeurs incomplets vaut Regrouper l'information des fournisseurs, alors les demandeurs ressortent via la port UnmergedRequestor, avec les fournisseurs regroupés pour ceux ayant les 'clé fournisseurs' égales à 1 et 3.
Les fournisseurs utilisés par au moins un demandeur ressortent par ce port.
Les fournisseurs qui ne correspondent à aucun demandeur. Si la valeur d'une clé d'attribut de fournisseur est nulle ou manquante, cette entité est produite sur ce port.
Si Traiter les fournisseurs multiples vaut Non, alors les fournisseurs en double sont rejetés.
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 aucun paramètre de regroupement n'est défini, toutes les entités seront 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. |
Traitement des regroupements |
Lorsque toutes les entités sont reçues : comportement par défaut. Le traitement n'aura lieu qu'une fois que toutes les entités en entrée seront présente. Quand le groupe change (avancé) : ce Transformer traitera les groupes en entrée dans l'ordre. Les changements de la valeur du paramètre Regrouper par sur le flux d'entrée déclencheront le traitement du groupe en cours de regroupement. Cela peut améliorer la vitesse globale (en particulier avec plusieurs groupes de taille égale), mais peut provoquer un comportement indésirable si les groupes en entrée ne sont pas ordonné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 projet avec vos données est le seul moyen sûr d'identifier le gain de performance. |
Attribut de liste du demandeur | Liste des entités demandeuse dont les clés correspondent aux Attributs fournisseurs des entités fournisseuses entrant par le port Supplier. |
Attribut Fournisseur | Attribut des entités entrant par le port Supplier qui doit correspondre aux attributs définis dans le paramètre Attributs liste demandeursdes entités entrant par le port Requestor. |
Méthode de comparaison | Indique comment effectuer la comparaison entre les valeurs d'attributs du demandeur et du fournisseur. Si Automatique ou Numérique est spécifié, une tentative sera faite pour convertir les valeurs d'attribut en nombres avant de les comparer. Si la conversion numérique échoue, une comparaison par chaîne de caractères sera utilisée. |
Type de jointure |
Attributs uniquement : Les attributs du fournisseur seront joints aux entités du demandeur. Les attributs seront fusionnés selon les paramètres d'accumulation d'attributs et de génération de liste. Géométrie : La géométrie du fournisseur sera fusionnée avec celle du demandeur, et remplacera toute géométrie existante. Les attributs ne sont pas fusionnés. Attributs et géométrie : La géométrie et les attributs des fournisseurs sont joints aux entités du demandeur. Toute géométrie sur le demandeur sera écrasée. Les attributs seront fusionnés selon les paramètres d'accumulation d'attributs et de génération de liste. |
Traiter les fournisseurs multiples |
Si plus d'un fournisseur est trouvé pour un demandeur et que Traiter les fournisseurs dupliqués vaut Non , alors tous les fournisseurs après le premier exploité, ressortent par le port <Rejected> et uniquement le premier des Fournisseurs est appairé au demandeur. Si la valeur est Oui , les fournisseurs en double sont tous mis en correspondance avec les attributs de fusion du demandeur correspondants, sur la base du mode de Gestion des attributs, et, en option, ils sont produits sous la forme d'une liste d'attributs du demandeur, en utilisant le nom de liste spécifié. La géométrie du fournisseur est fusionnée en utilisant le type de fusion de géométrie spécifié. |
Type de jointure de géométries |
Construire des polygones : Si les fournisseurs sont constitués exclusivement d'entités polygonales et de polygones troués, tous les segments de bordure communs seront supprimés. Si les fournisseurs contiennent au moins une entité qui n'est pas un polygone troué ou un polygone, le Transformer formera des polygones et des polygones troués à partir des fournisseurs et joindra les segments de ligne connectés des entités des fournisseurs avant de définir la géométrie de l'entité du demandeur. Dans ce cas, la géométrie peut être un agrégat si plusieurs géométries disjointes ont été créées. Construire des agrégats : Le Transformer va créer un agrégat des géométries des entités du Fournisseur. (S'il n'y a qu'une seule entité du fournisseur, alors la géométrie du demandeur sera un agrégat avec un seul élément). Construire des lignes à partir de points : Le Transformer connectera les points des entités du fournisseur en lignes. Notez que toutes les entités non ponctuelles qui sont référencées seront ignorées lors de la construction des lignes. |
Demandeurs incomplets |
Ce paramètre définit la façon dont traiter les demandeurs incomplets. Si ce paramètre est défini sur Regrouper les informations sur les fournisseurs, les fournisseurs trouvés seront fusionnés sur le demandeur et ensuite transmis via le port UnmergedRequestor. Les fournisseurs utilisés seront émis via le port UsedSuppliers. Si ce paramètre vaut Ne pas regrouper l'information des Fournisseurs, alors les Demandeurs ressortiront intouchés via le port UnmergedRequestor, et les Fournisseurs ressortiront par le port UnusedSupplier. |
Si les attributs des Fournisseurs et Demandeurs ont le même nom, mais ne sont pas d'attribut de géométrie commençant par fme_, alors ils seront considérés comme en conflit.
Gestion des attributs |
Regrouper les fournisseurs : L'entité requérante conservera tous ses attributs non conflictuels et acquerra en plus tous les attributs non conflictuels de l'entité fournisseur. Ce mode traitera les attributs conflictuels en fonction du paramètre de résolution des conflits. Préfixe les fournisseurs : L'entité Demandeur conservera tous ses propres attributs. En outre, le demandeur acquiert des attributs reflétant les attributs de l'entité du fournisseur, avec le nom préfixé par le paramètre Préfixe. Remplacet par un fournisseur unique : tous les attributs de l'entité Demandeur seront supprimés, à l'exception des attributs géométriques qui commencent par fme_. Ensuite, tous les attributs d'une entité fournisseur (arbitraire) seront placés sur le demandeur. |
Résolution de conflit |
Utiliser les attributs du demandeur: si un conflit d'attributs apparaît, les valeurs des entités demandeur sont conservées. Utiliser le fournisseur: si un conflit d'attributs apparaît, les valeurs des entités fournisseur sont conservées. |
Ignorer les valeurs nulles |
Non: traite les attributs dont la valeur est nulle comme les autres. Oui : Traiter les valeurs d'attribut nulles comme moins importantes que les autres valeurs d'attribut. Chaque fois qu'une valeur nulle est fusionnée avec une valeur non nulle, la valeur non nulle prévaut, quel que soit le paramètre de Résolution de conflit. Note: Les valeurs d'attribut nulles et autres sont toujours plus dominantes que les valeurs d'attribut manquantes. En d'autres termes, lorsqu'une valeur d'attribut est fusionnée avec une valeur d'attribut manquante, la valeur d'attribut prévaut, quels que soient les paramètres Ignorer les valeurs nulles et Résolution de conflit. |
Préfixe |
Pour éviter qu'un attribut fournisseur ne soit ignoré à cause d'un attribut demandeur de même nom déjà existant, vous pouvez préfixer les attributs fournisseurs lorsqu'ils sont ajoutés aux demandeurs. Lorsqu'il existe plusieurs caractéristiques du fournisseur pour une entité du demandeur, les valeurs de plusieurs attributs du fournisseur sont fusionnées dans le même attribut préfixé. Lorsque plusieurs entités du fournisseur ont le même attribut, la valeur de l'attribut résultant est généralement prise dans la dernière de ces entités. Toutefois, ce processus est régi par le paramètre Ignorer les valeurs nulles. |
S'il y a des fournisseurs multiples et que Génération de liste est active, alors tous les Fournisseurs qui sont combinés à un Demandeur auront leurs attributs ajoutés à la liste spécifiée dans le Demandeur.
Note: Les attributs de liste ne sont pas accessibles à partir du schéma de sortie dans Workbench, sauf s'ils sont d'abord traités à l'aide d'un Transformer qui opère sur eux, comme ListExploder ou ListConcatenator. Il est également possible d'utiliser AttributeExposer.
Liste | Entrer un nom de liste. |
Ajouter à la liste |
Tous les attributs: Chaque attribut depuis un Fournisseur qui est combiné avec un Demandeur sera ajouté à la liste spécifiée dans List Name. Attributs sélectionnés: seuls les attributs spécifiés dans le paramètre Attributs sélectionnés seront ajoutés à la liste spécifiée dans le paramètre Liste. |
Attributs sélectionnés | Les attributs à ajouter à la liste lorsque le paramètre Ajouter à la liste vaut Attributs sélectionné. |
É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 du 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 d'espace de travail. 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 projet 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 iest 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.
Rechercher tous les résultats sur ce Transformer sur FME Community.
Les exemples peuvent contenir des informations sous licence Open Government - Vancouver et/ou Open Government - Canada.