tMap - 6.1

Composants Talend Guide de référence

EnrichVersion
6.1
EnrichProdName
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Open Studio for Big Data
Talend Open Studio for Data Integration
Talend Open Studio for Data Quality
Talend Open Studio for ESB
Talend Open Studio for MDM
Talend Real-Time Big Data Platform
task
Création et développement
Gouvernance de données
Qualité et préparation de données
EnrichPlatform
Studio Talend

Fonction

Le tMap est un composant avancé qui s'intègre au Studio Talend comme un plug-in.

Objectif

Le tMap transforme et dirige les données à partir d'une ou plusieurs source(s) et vers une ou plusieurs destination(s).

Si vous avez souscrit à l'une des solutions Big Data de Talend, ce composant est disponible dans les types de Job suivants :

Propriétés du tMap

Famille du composant

Processing

 

Basic settings

Map editor

Le Mapper est l'éditeur du tMap. Il vous permet de définir les propriétés d'aiguillage et de transformation des données.

Note

Si vous ne souhaitez pas gérer les erreurs d'exécution, vous pouvez utiliser l'option Die on error (cochée par défaut), en haut à droite de l'éditeur. Cette option arrête le Job en cas d'erreur.

Note

Pour optimiser les performances des transformations de données dans un Job gérant de multiples flux lookup contenant de larges volumes de données, vous pouvez cocher la case Lookup in parallel dans la boîte de données [Property Settings].

Ce composant offre la fonction de schéma dynamique. Cela vous permet de récupérer des colonnes inconnues à partir de fichiers source ou de copier des lots de colonnes d'une source sans avoir à mapper individuellement ces colonnes. Pour plus d'informations concernant les schémas dynamiques, consultez le Guide utilisateur de Studio Talend.

Cette fonctionnalité de schéma dynamique est conçue pour permettre de récupérer des colonnes inconnues d'une table. Il est recommandé de l'utiliser uniquement à cet effet et non pour créer des tables.

 

Mapping links display as

Auto : par défaut, les liens sont en forme de courbes.

Curves : les liens du mapping sont en forme de courbes.

Lines : les liens du mapping sont en forme de lignes droites. Cette dernière option améliore légèrement les performances.

 

Temp data directory path

Saisissez le chemin du dossier dans lequel vous souhaitez stocker les données temporaires générées par le traitement des données de référence (lookup). Pour plus d'informations sur ce dossier, consultez le Guide d'utilisation du Studio Talend.

Preview

L'aperçu est un instantané des données du Mapper. Il n'est visible que lorsque les propriétés du Mapper sont renseignées. La synchronisation de l'aperçu ne prend effet qu'après la sauvegarde des modifications.

Advanced settings

Max buffer size (nb of rows)

Saisissez la taille de la mémoire physique, en nombre de lignes, que vous souhaitez allouer aux données traitées.

 

Ignore trailing zeros for BigDecimal

Cochez cette case pour ignorer les zéros non nécessaires dans le traitement de données BigDecimal.
 

tStatCatcher Statistics

Cochez cette case pour collecter les données de log, aussi bien au niveau du Job qu'au niveau de chaque composant.

Global Variables

ERROR_MESSAGE : message d'erreur généré par le composant lorsqu'une erreur survient. Cette variable est une variable After et retourne une chaîne de caractères. Cette variable fonctionne uniquement si la case Die on error est décochée, si le composant a cette option.

Une variable Flow fonctionne durant l'exécution d'un composant. Une variable After fonctionne après l'exécution d'un composant.

Pour renseigner un champ ou une expression à l'aide d'une variable, appuyez sur les touches Ctrl+Espace pour accéder à la liste des variables. A partir de cette liste, vous pouvez choisir la variable que vous souhaitez utiliser.

Pour plus d'informations concernant les variables, consultez le Guide utilisateur du Studio Talend.

Utilisation

Plusieurs utilisations sont possibles, de la simple réorganisation des champs de données aux transformations les plus complexes, telles que le multiplexage et le démultiplexage de données, la concaténation, l'inversion, le filtrage, etc.

Log4j

Si vous utilisez une solution Talend soumise à souscription, l'activité de ce composant peut être journalisée avec la fonctionnalité log4j. Pour plus d'informations sur cette fonctionnalité, consultez le Guide utilisateur du Studio Talend.

Pour plus d'informations sur les niveaux de logs du log4j, consultez la documentation d'Apache : http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html (en anglais).

Limitation

L'utilisation du composant tMap requiert un niveau moyen de connaissances en Java afin d'exploiter au mieux ses fonctionnalités.

Ce composant est utilisé comme une étape intermédiaire, c'est pourquoi il ne peut pas être utilisé comme composant de début ou de fin de Job.

Scénario 1 : Mapping simple de données avec filtre et jointure explicite

Le Job ci-dessous a pour objectif de lire des données d'un fichier .csv stocké dans le Repository, de rechercher des données d'un fichier de référence, dont le schéma est également stocké dans le Repository puis d'extraire des données de ces deux fichiers en fonction de filtres et d'envoyer ces données vers les fichiers de sortie et de rejet.

Construire le Job

  1. Déposez deux composants tFileInputDelimited, un tMap et trois tFileOutputDelimited de la Palette dans l'espace de modélisation graphique.

  2. Renommez respectivement les deux tFileInputDelimited Cars (voitures) et Owners (propriétaires).

  3. Reliez les deux composants d'entrée au tMap à l'aide de liens Row > Main et nommez ces connexions Cars_data et Owners_Data, respectivement.

  4. Reliez le tMap aux trois composants de sortie à l'aide de liens Row > New Output (Main) et nommez ces connexions, respectivement, Insured, Reject_NoInsur et Reject_OwnerID.

Configurer les composants

  1. Double-cliquez sur le composant tFileInputDelimited nommé Cars pour paramétrer ses propriétés de base (Basic settings).

  2. Sélectionnez Repository dans les champs Property type et Schema. Pour le schéma, sélectionnez la métadonnée cars dans la boîte de dialogue [Repository Content]. Le reste des champs est automatiquement renseigné lorsque vous sélectionnez la métadonnée appropriée dans la liste.

  3. Double-cliquez sur le composant Owners et définissez à nouveau les propriétés. Sélectionnez la métadonnée appropriée, owners dans cet exemple.

    Note

    Dans ce scénario, les schémas d'entrée sont stockés dans le nœud Metadata de la vue Repository afin de les retrouver plus facilement. Pour plus d'informations concernant la création de métadonnées dans le Repository, consultez le Guide utilisateur du Studio Talend.

  4. Double-cliquez sur le composant tMap pour ouvrir le Mapper. La zone Input (données en entrée) est déjà renseignée avec les schémas des composants d'entrée et la première table correspond au flux principal (Main Row). Les libellés de chacune des connexions d'entrée apparaissent en en-tête des tables.

  5. Créez une jointure entre les deux tables d'entrée en faisant simplement glisser le champ ID_Owner de la table principale (Cars_data) vers le champ équivalent de la table de référence (Owners_data).

  6. Définissez le lien en Inner Join en cliquant sur le bouton tMap settings, en cliquant dans le champ Value pour Join Model, en cliquant sur le bouton qui apparaît dans le champ et en sélectionnant Inner Join dans la liste Options.

  7. Glissez et déposez le contenu de la table Cars_data vers la table Insured.

  8. Glissez les colonnes ID_Owner, Registration et ID_Reseller de la table Cars_data, ainsi que la colonne Name de la table Owners_data dans la table Reject_NoInsur.

  9. Glissez toutes les colonnes de la table Cars_data dans la table Reject_OwnerID.

    Pour plus d'informations concernant le mapping de données, consultez le Guide utilisateur du Studio Talend.

  10. Cliquez sur le bouton [+] en haut de la table Insured afin d'ajouter une ligne de filtre.

    Glissez la colonne ID_Insurance de la table Owners_data vers la zone de filtre et saisissez la formule suivante d'exclusion des valeurs non définies : Owners_data.ID_Insurance != null.

    Avec ce filtre, la table Insured va rassemble tous les enregistrements qui possèdent un ID Insurance.

  11. Cliquez sur le bouton tMap settings en haut de la table Reject_NoInsur et sélectionnez true pour Catch lookup inner join reject afin que de définir cette table comme le flux de rejet standard pour rassembler les enregistrements n'ayant pas d'ID Insurance.

  12. Cliquez sur le bouton tMap Settings en haut de la table Reject_OwnerID puis sélectionnez true pour Catch lookup inner join reject afin que cette table rassemble les enregistrements du flux Cars_data ayant des IDs manquants ou ne correspondant pas.

    Cliquez sur OK pour valider et revenir à l'espace de modélisation.

  13. Double-cliquez sur chacun des composants de sortie afin de définir leurs propriétés. Si vous souhaitez créer un nouveau fichier, parcourez votre système jusqu'au dossier de destination et saisissez le nom du fichier avec son extension.

    Cochez la case Include header pour réutiliser les libellés des colonnes du schéma d'entrée dans comme en-tête dans votre fichier de sortie.

Exécuter le Job

  1. Appuyez sur les touches Ctrl+S pour sauvegarder votre Job.

  2. Sauvegardez votre Job et appuyez sur F6 pour exécuter le Job ou passez à l'onglet Run Job et cliquez sur le bouton Run.

    Les fichiers de sortie sont créés et ils contiennent les données définies.

Pour des exemples d'utilisation des schémas dynamiques avec le tMap, consultez :

Scénario 2 : Mapping de données avec rejet Inner join

Ce scénario, basé sur le scénario 1, requiert l'ajout d'un fichier d'entrée contenant les informations sur les revendeurs, ainsi que l'ajout de champs supplémentaires dans la table de sortie principale. De plus, deux filtres sont ajoutés sur les jointures Inner Join afin de récupérer les rejets spécifiques.

Construire le Job

  1. Déposez un tFileInputDelimited et un tFileOutputDelimited dans l'espace de modélisation graphique et renommez les composants, respectivement Resellers et No_Reseller_ID.

  2. Connectez le tFileInputDelimited au tMap à l'aide d'un lien Row > Main et renommez le lien Resellers_data.

  3. Connectez le tMap au nouveau tFileOutputDelimited à l'aide d'un lien Row > New Output. Renommez le lien Reject_ResellerID.

Configurer les composants

  1. Double-cliquez sur le composant Resellers pour définir ses propriétés dans la vue Basic settings.

  2. Sélectionnez Repository dans la liste Property Type et sélectionnez le schéma resellers, dans la boîte de dialogue [Repository Content]. Les autres champs sont automatiquement renseignés.

    Note

    Dans ce scénario, les schémas d'entrée sont stockés sous le nœud Metadata du Repository afin de les retrouver facilement. Pour plus d'informations concernant la création de métadonnées dans le Repository, consultez le Guide utilisateur du Studio Talend.

  3. Double-cliquez sur le composant tMap pour ouvrir le Map Editor. Vous remarquerez que le schéma est automatiquement ajouté à la zone Input des schémas d'entrée.

  4. Créez une jointure entre le flux d'entrée principal et le nouveau flux d'entrée en déposant la colonne ID_Reseller de la table Cars_data dans la colonne ID_Reseller de la table Resellers_data.

  5. Cliquez sur le bouton tMap settings en haut de la table Resellers_data et sélectionnez Inner Join comme modèle de jointure (Join Model).

  6. Glissez-déposez toutes les colonnes de la table Resellers_data sauf ID_Reseller dans la table de sortie principale, Insured.

    Note

    Lorsque deux Inner Joins sont définis, vous devez soit définir deux tables de rejet inner join pour différencier les deux rejets, soit rassembler les deux rejets inner join dans une seule et même table de sortie, s'il n'y a qu'une seule sortie.

  7. Dans la zone de sortie Output, cliquez sur le signe [+] pour ajouter une nouvelle table de sortie et nommez-la Reject_ResellerID.

  8. Déposez toutes les colonnes de la table Cars_data dans la table Reject_ResellerID.

  9. Cliquez sur le bouton tMap Settings puis sélectionnez true pour Catch lookup inner join reject afin de définir la dernière table comme étant la table du flux de sortie de rejets Inner Join. Si la jointure Inner Join ne peut être établie pour une entrée, les informations concernant les voitures correspondantes seront rassemblées dans le flux de sortie.

  10. Appliquez maintenant un filtre sur chacune des sorties de rejet Inner Join afin de distinguer les deux types de rejets.

    Dans la première table de rejet (Reject_OwnerID), cliquez sur la flèche dotée d'un signe [+] pour ajouter une ligne de filtre et renseignez ce champ avec la formule suivante pour ne recueillir que les rejets liés au champ OwnerID non défini : Owners_data.ID_Owner==null

  11. Dans la seconde table de rejet Inner Join (Reject_ResellerID), renouvelez l'opération et utilisez la formule suivante : Resellers_data.ID_Reseller==null

    Cliquez sur OK pour enregistrer les changements et fermer le Mapper.

  12. Double-cliquez sur le composant No_Reseller_ID pour afficher sa vue Basic settings.

    Dans ce scénario, spécifiez simplement le chemin d'accès au fichier de sortie et cochez la case Include Header. Laissez les autres paramètres tels qu'ils sont.

  13. Pour comprendre le fonctionnement du Mapper, dans ce scénario, retirez du fichier Resellers.csv les lignes correspondant aux Reseller ID 5 et 8.

Exécuter le Job

  1. Appuyez sur les touches Ctrl+S pour sauvegarder votre Job.

  2. Exécutez le Job via la touche F6 du clavier, ou à partir de la vue Run.

    Les quatre fichiers de sortie sont tous créés dans le dossier défini dans les propriétés de la vue Component.

    Remarquez que dans le fichier de rejet lié à l'Inner Join, NoResellerID.csv, le champ ID_Owners correspond aux entrées du fichier Cars dont le Reseller ID est égal à 5 et 8, manquant dans le fichier Resellers.csv.

Pour des exemples d'utilisation des schémas dynamiques avec le tMap, consultez :

Scénario 3 : Mapping de jointure en cascade

Un troisième scénario plus avancé et basé sur le scénario 2 requiert l'ajout d'une nouvelle entrée contenant les informations d'assurance, par exemple.

Dans le Mapper, mettez en place une jointure Inner Join entre deux tables de référence (Lookup) des flux secondaires Owners et Insurance afin de gérer les références en cascade et par conséquent de récupérer les informations de la table Insurance via les données de la table Owners.

Scénario 4 : Mapping avancé avec filtres, jointures explicites et rejet Inner join

Ce scénario présente un Job utilisant le tMap et permettant de trouver les clients propriétaires d'une voiture de marque définie et avoir entre 2 et 6 enfants (inclus) dans un but de vente incitative.

Construire le Job

  1. Cliquez-déposez les composants suivants de la Palette dans l'espace de modélisation graphique : trois tFileInputDelimited, un tMap et deux tFileOutputDelimited.

  2. Connectez les composants d'entrée au tMap à l'aide de connexions de type Main row.

    Faites attention au premier composant que vous connectez car son flux de données sera automatiquement un flux Main (principal). Et toutes les autres connexions seront alors de type Lookup (flux de référence). Dans ce scénario, le composant d'entrée Owners sera relié au tMap par le flux Main.

Configurer les composants

  1. Définissez les propriétés de chaque composant d'entrée dans l'onglet Basic settings. Configurez les propriétés du composant Owners.

  2. Sélectionnez Repository dans la liste Property Type et sélectionnez le schéma resellers, dans la boîte de dialogue [Repository Content]. Les autres champs sont automatiquement renseignés.

    Note

    Dans ce scénario, les schémas d'entrée sont stockés sous le nœud Metadata du Repository afin de les retrouver facilement. Pour plus d'informations concernant la création de métadonnées dans le Repository, consultez le Guide utilisateur du Studio Talend.

    Répétez ces étapes pour les autres composants d'entrée : Cars et Resellers. Ces deux flux de référence (Lookup) renseigneront les tables secondaires (lookup) de la zone d'entrée du Map Editor.

  3. Double-cliquez sur le composant tMap pour ouvrir le Map Editor et définir le mapping et les filtres.

    Configurez une jointure explicite entre le flux Main Owner et le flux Lookup Cars en glissant-déposant la colonne ID_Owner de la table Owner dans la colonne ID_Owner de la table Cars. La jointure explicite s'affiche avec une clé de hachage.

  4. Dans le champ Expr. Key de la colonne Make (Marque), saisissez (en Java) le filtre à appliquer. Dans ce cas d'utilisation, saisissez simplement "BMW" puisque ce qui est recherché ce sont les propriétaires (Owners) de cette marque en particulier.

  5. Effectuez une jointure en cascade entre les deux tables de référence Cars et Resellers, sur la colonne ID_Reseller, afin de retrouver les informations sur les propriétaires et plus précisément le nombre d'enfants qu'ils ont.

  6. Comme vous souhaitez exclure les valeurs nulles dans une table séparée et les exclure de la sortie standard, cliquez sur le bouton tMap Settings puis sélectionnez Inner Join comme modèle de jointure pour chaque table Lookup à filtrer.

  7. Dans les paramètres du tMap, vous pouvez sélectionner une des options suivantes : Unique match, First match, ou All Matches. Dans cet exemple, sélectionnez l'option All matches. Ainsi, si plusieurs correspondances sont trouvées dans l'Inner Join (i.e. les lignes répondant à la jointure explicite ainsi qu'au filtre), elles seront toutes prises en compte dans le flux de sortie (soit dans le flux de rejet, soit dans le flux de sortie standard).

    Note

    L'option Unique match fonctionne de la même manière que l'option Last match. Les options First match et All matches fonctionnent comme l'indiquent leurs noms (respectivement première correspondance et toutes les correspondances).

  8. Puis dans la zone Output du Map Editor, ajoutez deux tables : une pour les correspondances répondant à la jointure explicite et au filtre et une pour les rejets.

  9. Déposez toutes les colonnes de la table Owners, les colonnes RegistrationMake et Color de la table Cars ainsi que les colonnes ID_Reseller et Name_Reseller de la table Reseller dans la table de sortie principale.

  10. Déposez toutes les colonnes de la table Owners dans la table de rejets.

  11. Cliquez sur le bouton Filter en haut de la table de sortie principale afin d'afficher la zone d'expression Filter.

    Saisissez une instruction afin de réduire le nombre de lignes chargées dans le flux principal de sortie. Dans cet exemple, saisissez : Owners.Children_Nr >=2 && Owners.Children_Nr <= 6.

  12. Dans la table de rejets, cliquez sur le bouton tMap settings et définissez les types de rejets.

    Sélectionnez true pour Catch output reject afin de collecter des données concernant les détenteurs de voitures BMW ayant moins de deux enfants ou plus de six enfants.

    Sélectionnez true pour Catch lookup inner join reject afin de collecter des données concernant les propriétaires d'autres marques et ceux pour qui l'information Reseller est introuvable.

    Cliquez sur OK pour valider le mapping et fermer l'éditeur.

    Dans l'éditeur graphique, cliquez-droit sur le tMap et créez une connexion de sortie vers les composants correspondants.

  13. Configurez les paramètres des composants de sortie dans l'onglet Basic settings.

    Dans ce scénario, spécifiez simplement les chemins d'accès aux fichiers de sortie et cochez la case Include Header. Laissez les autres paramètres tels qu'ils sont.

Exécuter le Job

  1. Enregistrez votre Job.

  2. Appuyez sur F6 pour exécuter votre Job. Le fichier de sortie principal contient les informations concernant les détenteurs de BMW ayant entre deux et six enfants, et le fichier de rejet contient les informations concernant les autres possesseurs de voiture(s).

Pour des exemples d'utilisation des schémas dynamiques avec le tMap, consultez :

Scénario 5 : Mapping avancé avec filtres et différents rejets

Ce scénario est une version modifiée du scénario précédent. Il décrit un Job qui applique des filtres pour limiter la recherche aux possesseurs de voitures BMW ou Mercedes ayant entre deux et six enfants et divise les données sans correspondance en différents flux de rejets.

Construire le Job

  1. Reprenez le Job de Scénario 4 : Mapping avancé avec filtres, jointures explicites et rejet Inner join.

  2. Déposez un nouveau tFileOutputDelimited de la Palette dans l'espace de modélisation graphique et nommez-le Rejects_BMW_Mercedes.

  3. Connectez le composant tMap au nouveau composant de sortie à l'aide d'une connexion Row et nommez cette connexion selon la fonction du composant de sortie.

    Ce lien deviendra le nom de la nouvelle table de sortie dans le Map Editor.

  4. Renommez les connexions et les composants de sortie existants afin de présenter leur fonction.

    Les tables de sortie dans le Map Editor seront automatiquement renommées selon le libellé des liens. Dans cet exemple, renommez les connexions de sortie BMW_Mercedes_withChildren et Owners_Other_Makes, respectivement.

Configurer les composants

  1. Double-cliquez sur le composant tMap afin de lancer le Map Editor pour modifier le mapping et les filtres.

    Remarquez que la zone de sortie contient une nouvelle table de sortie, vide, nommée Rejects BMW_Mercedes. Vous pouvez ajuster la position de la table en la sélectionnant et en cliquant sur les flèches pointant vers le haut ou vers le bas, en haut de la zone de sortie.

  2. Supprimez le filtre BMW de la table Cars dans la zone d'entrée.

  3. Cliquez sur le bouton Filters pour afficher le champ Filter et saisissez un nouveau filtre afin de limiter la recherche aux seules marques de voitures BMW et Mercedes. L'instruction est la suivante : Cars.Make.equals("BMW") || Cars.Make.equals("Mercedes").

  4. Sélectionnez toutes les colonnes de la table principale de sortie et déposez-les dans la nouvelle table de sortie.

    Sinon, vous pouvez glisser les colonnes des tables d'entrée correspondantes dans la nouvelle table de sortie.

  5. Cliquez sur le bouton tMap settings en haut de la nouvelle table de sortie et sélectionnez true pour Catch output reject afin de collecter les données concernant les détenteurs de voiture(s) BMW ou Mercedes ayant moins de deux enfants ou plus de six.

  6. Dans la table Owners_Other_Makes, sélectionnez true pour Catch lookup inner join reject afin de collecter les données concernant les possesseurs de voitures d'autres marques et ceux dont l'information reseller est introuvable.

  7. Cliquez sur OK pour valider le mapping et fermer le Map Editor.

  8. Configurez les propriétés des composants de sortie dans leur vue Basic settings respective. Dans ce scénario, définissez simplement les nouveaux chemins d'accès aux fichiers de sortie et cochez la case Include Header.