Dans cet exercice, nous allons fusionner 2 CSV (marketing.csv et departementsInsee2003.csv du projet Fantastic), suite à 2 transformations, pour obtenir un unique CSV.
Question
Créez votre premier projet TOS for Data Integration.
Ouvrir l'assistant de TOS for Data Integration en double-cliquant sur le raccourci du logiciel
Sélectionner "Créer un nouveau projet" puis "Ok"
Saisissez le nom du projet puis cliquez sur "Terminer"
Dans l'assistant de TOS, sélectionner ce nouveau projet et ouvrez-le
Fermez l'onglet d'accueil en cliquant sur "Start now !"
Question
Créez un job design qui s'intitule "Exercice1".
Dans le référentiel à gauche de l'écran, cliquez droit sur "Jobs", puis sur "Créer un job"
Dans l'assistant qui s'ouvre, nommez votre job "Exercice1", puis cliquez sur "Terminer"
Un job vierge devra apparaître au niveau du job designer
Question
Créez des métadonnées pour chacun des 2 fichiers CSV.
Toujours dans le référentiel, développez la catégorie "Métadonnées"
Cliquez droit sur "Fichier délimité", puis "Créer un fichier délimité"
Dans l'assistant qui s'ouvre, entrez "Magasins" dans le champ nom, puis cliquez sur "Suivant"
Dans la fenêtre suivante, cliquez sur "Parcourir" et sélectionnez le fichier marketing.csv à l'endroit approprié ; sélectionnez également le bon format de votre ordinateur (son OS), puis faites "Suivant"
En bas de l'assistant, dans la zone "Aperçu", attendez que le premier aperçu soit terminé, puis cliquez sur "définir la ligne d'en-tête comme noms des colonnes" puis sur "Rafraîchir l'aperçu", puis sur "Suivant"
Dans la zone "description du schéma" cochez la case "clé" pour la seconde colonne (numéro des magasins) et décochez la case "nullable" (pour définir la clé primaire), puis "Terminer"
Procéder exactement de la même manière pour le second fichier CSV
Remarque : vos métadonnées apparaissent au niveau de Métadonnées => Fichier délimité
Question
Ajoutez les 2 fichiers délimités en entrée dans le job "Exercice1"
Appuyez sur Ctrl+Maj tout en glissant le fichier délimité dans votre job vierge : un composant tFileInputDelimited est alors automatiquement créé dans votre job
Procédez de même pour le second job
Question
Transformez vos numéros de départements pour qu'ils soient les mêmes que ceux renseignés dans le fichier des magasins.
Enlevez les 0 devant les numéros de département inférieurs à 10
Utilisez le composant tMap, et affichez le résultat avec tLogRow pour effectuer un simple test
Dans la palette de composants sur la droite, trouvez le composant tLogRow, glissez-le et déposez-le dans le job designer (vers la droite)
Entre tLogRow et Departements, glissez-déposez le composant tMap
Relier les 3 composants (Departements -> tMap -> tLogRow) : créez donc 2 liens en cliquant droit sur le composant de départ, puis glissez ce lien jusqu'au composant d'arrivée, pour chaque lien. Nommez ces liens.
Une erreur apparaît sur tMap : c'est normal
Double cliquez sur tMap pour afficher les paramètres de transformation : glissez-déposez tous les attributs de la table de départements vers la table de sortie.
Mettez votre souris sur l'attribut num_dpt de la table de sortie, "..." s'affiche, cliquez dessus.
Dans la partie "Expression", saisissez la fonction Java : Integer.parseInt(XXX.num_dept), avec XXX le nom de votre premier lien.
Puis changez en bas à droite le type de cet attribut en int | Integer, et cliquez sur Terminer
Exécutez le job dans la vue Exécution (flèche verte)
Question
Transformez vos numéros de magasins pour que tous commencent par un M.
Utilisez une expression régulière Java
Utilisez le composant tMap, et affichez le résultat avec tLogRow pour effectuer un simple test
Cette fois, vous ne pouvez pas utiliser une fonction prédéfinie : il faut vous-même écrire votre fonction Java en créant une routine Talend !
Dans le référentiel, sous l'arborescence "code", cliquez droit sur "routines" et sélectionnez "creer une routine" ;
Nommez votre routine et cliquez sur Terminer
Une fenetre s'affiche alors avec une classe java portant le meme nom que votre routine : remplacez la fonction helloExample par la fonction suivante (noubliez pas "import java.util.regex.Pattern;") :
public static String corrigerNumMagasin(String s) {
if (Pattern.matches("M.*", s)==false) return "M"+s;
else return s;
}
Sauvegardez votre routine et retournez dans le job initial
Utilisez à nouveau tMap et tLogRow comme précédemment
Relier les 3 composants (Departements -> tMap -> tLogRow) : créez donc 2 liens en cliquant droit sur le composant de départ, puis glissez ce lien jusqu'au composant d'arrivée, pour chaque lien. Nommez ces liens.
Double cliquez sur tMap pour afficher les paramètres de transformation : glissez-déposez tous les attributs de la table de départements vers la table de sortie.
Mettez votre souris sur l'attribut num_magasin de la table de sortie, "..." s'affiche, cliquez dessus.
Dans la partie "Expression", saisissez la fonction routines.nom_routine.nom_fonction(XXX.Num_Magasin), avec XXX le nom de votre premier lien.
Cliquez sur Terminer
Exécutez le job
Question
Joignez les 2 fichiers après transformation et récupérez les données de sortie dans un CSV
Utilisez le composant tMap, et transformez le résultat en CSV grâce au composant tFileOutputDelimited
Supprimez les composants tLogRow (ils servaient juste à effectuer un test en affichant dans la console les données de sortie du tMap. Sans celui-ci nous n'aurions pu tester nos deux premiers tMap avant la toute fin de l'exercice !)
Dans la palette de composants sur la droite, trouvez le composant tFileOutputDelimited, glissez-le et déposez-le dans le job designer (vers la droite)
Remettre un nouveau composant tMap : il aura pour entrée la sortie des deux autres tMap ; en sortie, il aura le tFileOutputDelimited
Relier tMap avec ses 2 entrées (attention ! d'abord le tMap de transformation de Magasins, puis le tMap de transformation de Departements) et sa sortie
3 erreurs apparaissent : procédez exactement comme précédemment pour les tMap de transformation afin de définir leur sortie. Double cliquez sur le dernier tMap
Glissez-déposez tous les attributs des magasins vers la table de sortie SAUF le numéro du département
Puis sélectionnez le numéro département depuis la table des magasins et déposez-le sur la clé de la table des départements. Un lien violet apparaît.
Glissez-déposez tous les attributs des départements vers la table de sortie ; cliquez sur Appliquer, acceptez la propagation, puis Terminer
Configurez tFileOutputDelimited : double-cliquez sur le composant. Dans la vue Component qui s'ouvre sous le job, sélectionnez le bon chemin du fichier qui sera créé. Cochez la case "Include Header".
Exécutez le job et vérifiez que le CSV a bien été créé.
Votre job ressemble alors à ceci :