Altova MapForce 2027 Enterprise Edition

Exemple : Créer un rapport CSV à partir de plusieurs tables

Accueil Préc Haut Suivant

Cet exemple montre comment joindre plusieurs tables d’une base de données afin d’extraire des données pour les regrouper dans un seul rapport au format CSV. La base de données utilisée dans cet exemple s’appelle Nanonull.sqlite et est disponible dans le répertoire DocExamples. Cette base de données stocke des informations sur une entreprise fictive (notamment les commandes, les produits, les utilisateurs et leurs adresses). Comme c’est généralement le cas avec les bases de données relationnelles, les informations sont normalisées et réparties dans plusieurs tables. Par exemple, la table users stocke les données personnelles des utilisateurs (notamment le prénom, le nom et l'adresse e-mail). La base de données stocke également des informations sur les produits commandés par les utilisateurs, dans deux tables distinctes : orders (qui contient l'identifiant unique de la commande et l'heure à laquelle elle a été passée) et orderedproducts (qui contient la liste des produits commandés et leur quantité). De plus, les noms des produits eux-mêmes sont stockés dans une table distincte appelée products.

 

L’objectif de cet exemple est de générer un rapport à partir des données extraites de différentes tables, afin de déterminer clairement qui a commandé quels produits, à quel moment et en quelle quantité. Pour réaliser ce mappage, procédez comme suit :

 

1.Dans le menu Insérer, cliquez sur Base de données.

2.Lorsque vous êtes invité à sélectionner un type de base de données, cliquez sur SQLite, puis sur Suivant.

3.Recherchez la base de données Nanonull.sqlite mentionnée ci-dessus, puis cliquez sur Se connecter.

4.Lorsque vous y êtes invité, sélectionnez les tables orderedproducts, orders, products et users, puis cliquez sur OK.

mf_join_multiple1

5.Ajoutez un composant join au mappage et créez quatre nœuds/lignes en cliquant sur le bouton Ajouter entrée ( gui_add_function_parameter ).

6.Connectez les quatre tables du composant de base de données aux entrées correspondantes du composant join.

mf_join_multiple2

Note : Dans un autre scénario, vous pourriez connecter la table orderedproducts au composant de jointure, puis la table orders (celle qui est imbriquée sous celle-ci, et non celle située au même niveau), et ainsi de suite, de manière à ce que toutes les tables jointes soient imbriquées sous la même table "root" ; voir également Gérer des relations de bases de données. Le résultat du mappage serait le même si vous joigniez les tables de cette manière. La différence réside dans le fait que, dans cet exemple, les conditions join sont créées manuellement, alors que dans le scénario alternatif, elles seraient créées automatiquement par MapForce. Pour un exemple de jointure de tables sans avoir à définir manuellement les conditions join, voir Exemple : Joindre des tables en mode SQL. Un autre mappage où toutes les tables jointes se trouvent sous la même table "root" est disponible à l’emplacement suivant : <Documents>\Altova\MapForce2027\MapForceExamples\DB_Denormalize.mfd.

 

Dans cet exemple, les tables connectées au composant join sont classées dans l’ordre suivant :

 

1.orderedproducts

2.orders

3.products

4.users

 

Cet ordre influe sur la manière dont les structures respectives s’affichent dans le dialogue « Définir condition join » lorsque vous cliquez sur le bouton Définir condition join (mf_ic_join_key ). En effet, la première table (orderedproducts) apparaît par défaut sous Structure 1, et la table qui la suit immédiatement (orders) apparaît sous Structure 2.

mf_join_multiple3

Pour définir la première condition join, cliquez sur l’élément order_id dans le volet de gauche et sur l’élément id dans le volet de droite. Les champs orderedproducts.order_id et orders.id sont désormais appariés :

mf_join_multiple4

Jusqu’à présent, seules deux tables ont été jointes. Pour définir des conditions join impliquant une troisième table, sélectionnez la table souhaitée dans la liste déroulante située au-dessus du volet de droite. Le volet de gauche affiche dans ce cas toutes les tables qui le précèdent dans le composant join. Par exemple, si vous sélectionnez products à droite, le volet de gauche affiche alors orderedproducts et orders (puisque ces tables précèdent products dans le composant join). Vous pouvez désormais associer les champs de la table products aux champs des tables qui la précèdent (dans ce cas, orderedproducts.product_id et products.id).

mf_join_multiple5

Pour joindre une quatrième table (users), sélectionnez la table users dans la liste déroulante. Vous pouvez désormais associer les champs orders.user_id et users.id.

mf_join_multiple6

Maintenant que toutes les conditions join requises ont été définies, les éléments du composant join peuvent être mappés à un composant cible. Pour terminer le mappage, ajoutez un composant CSV (voir Fichiers CSV et texte), puis connectez les éléments du composant join au composant CSV cible comme illustré ci-dessous :

mf_join_multiple7

Le mappage illustré ci-dessus génère un rapport (au format CSV) compilé à partir des quatre tables impliquées dans la jointure, comme suit :

 

•ID de la commande (issu de la table orderedproducts)

•Quantité d’articles commandés (issue de la table orderedproducts)

•Heure à laquelle la commande a été passée (provenant de la table orders)

•Nom du produit commandé (issu de la table products)

•Prénom et nom de l’utilisateur ayant commandé le produit (provenant de la table users).

 

Toutes les tables de cet exemple sont jointes en utilisant le mode INNER JOIN. Pour plus d’informations sur la modification du mode de jointure en LEFT OUTER JOIN, voir Modifier le mode join.

© 2020-2026 Altova GmbH