Composants Join
Parfois, vous souhaitez combiner des données depuis deux structures ou plus sur la base de conditions (par exemple, si le champ A dans la première structure a la même valeur que les champ B dans la deuxième structure). Pour ce type de mappage, vous pouvez utiliser un composant join.
Un composant join est un composant MapForce qui permet de joindre deux structures ou plus dans le mappage sur la base de conditions définies par l'utilisateur. Il retourne l'association (ensemble joint) d'items qui satisfont à la condition. Les composants Join sont particulièrement utiles pour combiner des données provenant de deux structures qui partagent un champ commun (comme une identité).
Par exemple, dans le mappage illustré ci-dessous, le composant central est un composant "Join". Dans ce mappage, deux structures XML (une liste de personnes et une liste d'adresses) sont jointes. L'objectif est d'obtenir tous les détails de chaque personne dans un fichier XML cible. Les champs FirstName et LastName agissent en tant que clés de jointure. Si la valeur de FirstName et LastName (sous Person) est la même que celle de FirstName et LastName (sous Address), les détails d'adresse correspondent à une seule et même personne et ils deviennent "joins". Tous les items provenant de la structure jointe peuvent aussi être mappés dans une autre cible (dans ce cas, un fichier XML). La condition join elle-même est définie dans les propriétés du composant join, en cliquant sur le bouton Définir condition Join (
). Cet exemple s'accompagne d'un échantillon de mappage et est expliqué de manière détaillée dans Exemple : Joindre des structures XML.

JoinPeopleInfo.mfd
Comme illustré ci-dessus, les structures de source et le composant join sont liées par des connexions "Copier-tout", qui réduisent l'encombrement visuel du mappage. En général, ce type de connexion est créé automatiquement par MapForce lorsque le contexte est pertinent (pour plus d'informations, voir Connexions Copier tout).
Les structures qui doivent être jointes peuvent provenir soit de composants séparés (comme dans le mappage ci-dessus), soit appartenir au même composant. Les structures à joindre peuvent aussi être de genres différents (par exemple, une structure XML et une table de base de données). Pour plus d'informations concernant des jointures liées aux bases de données, voir Joindre les données de base de données.
Pour ajouter un composant join :
1.Définissez le langage de transformation de mappage sur Built-In (pour ce faire, cliquez sur le bouton
de la barre d’outils ou utilisez la commande de menu Sortie | Moteur d’exécution Built-In).
2.Dans le menu Insérer, cliquez sur Join. Vous pouvez également cliquer sur le bouton Join (
) de la barre d’outils. Le composant join apparaît dans le mappage. Par défaut, il accepte les données provenant de deux structures ; il dispose donc de deux entrées de type nœuds/lignes. Si nécessaire, vous pouvez ajouter de nouvelles entrées dans la jointure en cliquant sur le bouton Ajouter entrée (
), voir Joindre trois structures ou plus.

3.Connectez les structures à joindre aux éléments de type nœuds/lignes du composant join.
4.Ajoutez la condition de jointure (ou plusieurs conditions). Pour ce faire, cliquez avec le bouton droit sur le composant join et sélectionnez Propriétés. Les conditions de jointure peuvent également être ajoutées directement à partir du mappage, en connectant le résultat booléen d’une fonction à l’élément condition du composant join. Dans certains cas, lorsque des tables de base de données sont jointes, la ou les conditions de jointure peuvent être créées automatiquement par MapForce. Pour plus d’informations, voir Ajouter des conditions join.
Notes :
•Les composants join sont pris en charge lorsque le langage cible du mappage est défini sur Built-In. La génération de code en C#, C++ ou Java n’est pas prise en charge.
•Lorsqu’une structure n’est pas une source d’entrée valide ou prise en charge pour la jointure, MapForce affiche des conseils soit immédiatement directement sur le mappage, soit dans la fenêtre Messages, lorsque vous validez le mappage (voir Valider des mappages).
•Les composants join ne doivent pas être connectés à des paramètres d'entrée ni aux résultats de fonctions inline définies par l'utilisateur. Si de telles connexions existent, des erreurs de validation se produiront lors de la validation du mappage.
•Lorsque vous connectez des composants de base de données éligibles (tels que des tables ou des vues) directement à un composant join, un bouton Mode SQL (
) apparaît automatiquement dans le coin supérieur droit du composant join. Lorsqu’il est activé, ce bouton offre des fonctionnalités SQL spécifiques applicables à l’opération de jointure (voir Joins dans le mode SQL).
•Il n’est pas possible de connecter la sortie de l’élément joined à un autre composant join. Si nécessaire, vous pouvez toutefois connecter un résultat partiel d’une jointure à une autre.
Composants Join comparés à d'autres types de composant
Dans certains cas, il est possible d'utiliser des variables complexes ou des filtres à la place des composants join pour obtenir les mêmes résultats (voir respectivement Utiliser des variables et Filtres et conditions). Cependant, contrairement à d’autres types de composants, les composants join facilitent la compréhension du mappage, car ils permettent de visualiser d’un seul coup d’œil les données qui sont jointes. De plus, si le mode SQL est activé dans le composant Join, la performance de mappage s'améliore considérablement (cela s'applique aux jointures de base de données, voir Joindre les données de base de données).
Ajouter un contexte parent
Dans certains cas particuliers, afin d’obtenir un résultat de mappage spécifique, vous pouvez fournir explicitement un contexte de mappage (appelé "contexte parent") pour les données connectées au composant join. Pour ajouter un contexte parent, cliquez avec le bouton droit de la souris sur l'élément joined du composant join, puis sélectionnez Ajouter Contexte Parent dans le menu contextuel. Le composant Join change d'apparence pour inclure une entrée supplémentaire parent-context à laquelle vous pouvez connecter l’élément source requis. Pour plus d'informations, voir Exemple : Changer le contexte Parent.
Le contexte parent est le contexte hérité d'un nœud parent. Il détermine quelles données sources et quels résultats intermédiaires sont accessibles aux nœuds descendants. Certains composants de traitement des données, notamment les fonctions d'agrégation de base, les composants join et les variables, proposent un paramètre parent-context qui vous permet d'influencer le contexte hérité et, par conséquent, de modifier le résultat.