SQLCreator
Génère des entités FME et/ou des schémas à partir des résultats d'une requête SQL exécutée sur une base de données. Une entité FME est créée pour chaque ligne des résultats de la requête SQL.
Cas d'utilisations typiques
- Extrait des enregistrements d'une base de données en tant qu'entités FME selon une déclaration SQL.
- Ajouter des entités depuis une base de données durant un traitement
- Exécuter une jointure de base de données
Comment fonctionne-t-il ?
SQLCreator exécute une instruction SQL contre une base de données. Il n'a pas de ports d'entrée, et donc (contrairement au SQLExecutor) ne dépend pas des entités entrantes pour déclencher l'instruction - la requête est plutôt exécutée une seule fois.
Les requêtes SQL sont construites dans le Transformer, en utilisant la syntaxe appropriée pour utilisation sur la base de données. Les requêtes spatiales sont supportées si la base de données supporte les prédicats spatiaux.
Une entité est générée pour chaque ligne du résultat de la requête, via le port Result.
Une entité à schéma unique peut également être produite si elle est prise en charge par la base de données.
Exemples
Dans cet exemple, nous allons créer un jeu d'entités en interrogeant une base de données PostGIS, qui possède une table contenant des adresses avec une géométrie de points. Nous utiliserons une instruction SELECT qui extrait un sous-ensemble de données basé sur le code postal.
Un SQLCreator est placé dans le traitement.
Dans la fenêtre de paramètres, la Connexion à la base de données est sélectionnée (ou définie).
Une déclaration SQL est construite dans le paramètre Instruction SQL, en utilisant l'éditeur intégré. La syntaxe correspond à la base de données utilisée.
Il y a un raccourci pratique dans l'éditeur : en faisant un clic droit sur le nom de la table (ou de la colonne) sous Tables de la base de données, vous pouvez créer une instruction rapide basée sur SELECT et plus, puis éditer à partir d'ici.
Dans ce cas, nous sélectionnons tous les enregistrements de la table PostalAddress qui ont un code postal commençant par V6E.
Par défaut, le résultat en sortie a des attributs cachés. Choisissez ceux que vous souhaitez inclure dans le paramètre Attributs à exposer.
Les résultats de la requête sont extraits, incluant les géométries.
Notez que seuls les attributs qui sont exposés dans visibles dans la Vue Table.
Notes
- Si la base de données supporte les prédicats spatiaux, des requêtes spatiales peuvent être utilisées.
- SchemaScanner peut également être utile comme alternative pour produire des schémas.
- Le SQLCreator ne peut être utilisé que sur des sources de données compatibles avec SQL. Pour utiliser SQL avec des données non-SQL, envisagez d'utiliser InlineQuerier.
- Si toutes les données à interroger existent déjà dans une source de données compatible SQL, il est toujours plus efficace d'utiliser SQLCreator ou SQLExecutor, car cela permet de travailler sur (et de filtrer) les données à traiter avant de les lire dans l'environnement FME.
- Pour des jointures simples d'une table de base de données vers des entités, le DatabaseJoiner peut être plus efficace (si le(s) champ(s) clé(s) sont indexés). DatabaseJoiner ne nécessite pas de connaissances en SQL.
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 en entrée
SQLCreator n'a pas de ports d'entrée.
Ports de sortie
Si cela est demandé dans les paramètres et supporté par la base de données, les entités du schéma sont éditées ici.
Un attribut appelé fme_query
est ajouté aux entités du schéma contenant le SQL associé.
Résultats de la requête.
Si une erreur de lecture survient, une entité est générée via ce port avec l'attribut _reader_error qui contient le dernier message d'erreur.
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
Format |
Sélectionner un format de jeu de données. |
Jeu de données/Connexion |
Selon le format choisi, sélectionner un jeu de données ou utiliser/configurer une connexion à une base de données. |
Paramètres |
Paramètres spécifiques à un format |
Système de coordonnées |
Le système de coordonnées de la base de données à laquelle on se connecte, ainsi que le système de coordonnées du résultat. Laisser par défaut (Lire depuis la source) ou utiliser une sélection dans la galerie de systèmes de coordonnées. |
Instruction SQL |
Spécifier la requête SQL en utilisant l'éditeur de texte ou choisir un attribut qui contient la requête. Plusieurs commandes SQL peuvent être délimitées par un caractère spécifié à l'aide du mot-clé FME_SQL_DELIMITER, intégré au tout début de l'instruction SQL. Le caractère unique qui suit immédiatement ce mot-clé sera utilisé pour diviser le SQL qui sera ensuite envoyé à la base de données pour exécution. (Note : Inclure un espace avant le caractère). Insérer un trait d'union devant une commande indique que les erreurs doivent être ignorées. Certains formats de base de données supportent les commentaires avec /* ... */ ou doubles traits d'union (--). L'exemple suivant contient deux commandes SQL où les erreurs de la première commande seront ignorées : FME_SQL_DELIMITER ; -SELECT * FROM TABLEA; SELECT * FROM TABLEB; |
Attributs à exposer : |
Entrez les noms des attributs à exposer sur les entités créées par la requête. Les attributs seront affichés dans la même séquence que celle spécifiée dans la liste. Par défaut, les attributs des entités résultantes sont masqués. Vous pouvez spécifier les attributs à exposer en entrant les noms des attributs. Cliquez sur le bouton de navigation à côté du paramètre Attributs à exposer. Vous pouvez également utiliser une instruction SQL pour remplir la liste en cliquant sur "Remplir à partir d'une requête SQL…" et en saisissant une requête SQL. Les colonnes de la première entité correspondante seront utilisées pour remplir la liste des attributs. |
Entités à lire |
Sélectionnez le type d'entités à lire et à écrire :
|
É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 |
Non applicable |
Stockage des entités |
Non applicable |
Dépendances | Dépendant d'un format, peut nécessiter des pilotes tiers pour certains formats. |
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.