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 la touche 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.
![mf_map_JoinPeopleInfo](./images/mf_map_joinpeopleinfo.png)
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éfinir le langage de transformation de mappage sur BUILT-IN (pour ce faire, cliquer soit sur la touche de la barre outils , soit utiliser la commande de menu Sortie | Moteur d'exécution Built-In).
2.Dans le menu Insérer, cliquer sur Join. En alternative, cliquer sur la touche de la barre outils Join ( ). Le composant Join apparaît dans le mappage. Par défaut, il accepte des données provenant de deux structures, il a donc deux entrées nodes/rows. Si nécessaire, vous pouvez ajouter de nouvelles entrées dans la jointure en cliquant sur la touche Ajouter entrée (
), voir Joindre trois structures ou plus.
3.Connecter les structures qui doivent être jointes dans l'item nodes/rows du composant join.
4.Ajouter la condition pour la jointure (ou plusieurs conditions). Pour ce faire, cliquer avec la touche de droite dans le composant Join et choisir Propriétés. Les conditions Join peuvent aussi être ajoutées directement depuis le mappage, en connectant le résultat Booléen de certaines fonctions à l'item condition du composant Join. Dans certains cas. lorsque des tables de base de données sont jointes, la condition (ou les conditions) de jointure peut être créée automatiquement par MapForce. Pour plus d'informations, voir Ajouter des conditions Join.
Notes :
•Les composants Join sont pris en charge lorsque la langue cible du mappage est configurée sur BUILT-IN. La génération de code dans 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 indices soit immédiatement et directement dans 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 aux paramètres d'entrée ou aux résultats des fonctions définies par l'utilisateur inline. Si de telles connexions existent, des erreurs de validation se produiront au cours de la validation de mappage.
•Lorsque vous vous connectez à des composants de base de données éligibles (comme des tables ou des modes) directement dans un composant Join, une touche mode SQL ( ) apparaît automatiquement en haut à droite du composant Join. Une fois activée, cette touche offre des fonctions SQL spéciales applicables à l'opération de jointure (voir Joins dans le mode SQL).
•Il n'est pas possible de connecter la sortie de l'item joined à un autre composant Join. Néanmoins, le cas échéant, vous pouvez connecter un résultat partiel à une jointure d'un autre.
Composants Join comparés à d'autres types de composant
Dans certains cas, des variables complexes ou des filtres peuvent peuvent être utilisés pour obtenir les mêmes résultats (voir Utiliser des variables et Filtres et conditions, respectivement). Néanmoins, contrairement à d'autres types de composant, les composants Join permettent d'obtenir un mappage plus aisément compréhensible, étant donné que vous pouvez voir en un coup d'œil les données 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 (soit-disant "contexte parent") pour les données connectées au composant Join. Pour ajouter un contexte parent, cliquer avec la touche de droite sur l'item joined du composant Join, et choisir Ajouter Contexte Parent depuis le menu contextuel. Le composant Join change d'apparence pour inclure une entrée parent-context supplémentaire dans laquelle vous pouvez connecter l'item de source requis. Pour plus d'informations, voir Exemple : Changer le contexte Parent.
parent-context est un argument optionnel dans certaines fonctions d'agrégation core MapForce (comme dans min, max, avg, count). Dans un composant de source qui possède plusieurs séquences hiérarchiques, le contexte parent détermine l'ensemble de nœuds dans lequel la fonction doit fonctionner.