Du scénario au Job - 6.1

Talend Open Studio for Big Data Guide utilisateur

EnrichVersion
6.1
EnrichProdName
Talend Open Studio for Big Data
task
Création et développement
EnrichPlatform
Studio Talend

Pour mettre ce scénario en pratique, séparez ce Job en quatre étapes.

  1. Création du Job, configuration des paramètres et lecture du fichier d'entrée

  2. Mapping et transformations de données

  3. Définition des paramètres du fichier de référence, mapping correspondant à l'aide du composant tMap et sélection du mode Inner Join.

  4. Redirection des données en sortie dans une table MySQL

Etape 1 : Création du Job, définition des données d'entrée, lecture du fichier

Après avoir lancé le Studio Talend, créez un projet en local ou importez un projet démo si vous lancez le Studio Talend pour la première fois. Pour plus d'informations, consultez Travailler avec les projets.

Cette fenêtre est divisée en plusieurs espaces :

  • A gauche : le Référentiel (Repository) dans lequel sont référencés tous les Jobs, Business Models, Métadonnées, Code partagé, Documentation, etc.

  • Au centre : l'Editor (l'Editeur, espace de modélisation principal)

  • En bas : les onglets Component et Job, etc.

  • A droite : la Palette des composants métier ou techniques en fonction de l'outil utilisé dans le Studio Talend.

Sur la gauche du Studio, le Référentiel donne accès aux trois principaux outils du Studio Talend:

Pour créer le Job, cliquez d'abord sur l'élément Job Designs du Référentiel avec le bouton droit de la souris et sélectionnez la première option du menu : Create Job.

Dans la boîte de dialogue qui apparaît alors à l'écran, seul le premier champ Name est obligatoire. Saisissez California1 et cliquez sur Finish.

Un Job vide s'ouvre ensuite dans la fenêtre principale et la Palette de composants techniques apparaît (par défaut, à droite du Studio) affichant une dizaine de familles de composants, notamment : Databases, Files, Internet, Data Quality, etc. Plus de 400 composants sont disponibles actuellement.

Pour lire le fichier California_Clients, utilisez le composant tFileInputDelimited. Ce composant se trouve dans la famille File > Input de la Palette. Cliquez sur ce composant et placez-le à la gauche de l'espace de modélisation.

Définissez maintenant les propriétés de lecture de ce composant : chemin d'accès, séparateur de colonnes, encodage, etc. Pour ce faire, utilisez le Metadata Manager. Cet outil possède de nombreux assistants qui vous aideront à définir les paramètres nécessaires et vous permettront de conserver ces propriétés qui pourront être réutilisées en un seul clic dans de futurs Jobs.

Puisque votre fichier d'entrée est un fichier plat délimité, cliquez sur Metadata > File Delimited dans le Référentiel et dans le menu contextuel du nœud File Delimited, sélectionnez l'option Create file delimited. L'assistant spécifique aux fichiers délimités s'ouvre :

  • A l'étape 1, seul le champ Name est obligatoire : saisissez le nom California_clients et passez à l'étape suivante.

  • A l'étape 2, sélectionnez le fichier d'entrée (California_Clients.csv) via le bouton Browse.... Un extrait du fichier apparaît immédiatement dans la zone File viewer en bas de l'assistant, afin que vous puissiez en vérifier le contenu. Cliquez sur Next.

  • A l'étape 3, définissez les paramètres du fichier : encodage, séparateurs de colonnes et de lignes, etc. Puisque votre fichier d'entrée est standard, vous pouvez garder la plupart des valeurs par défaut. La première ligne de votre fichier est un en-tête contenant les noms des colonnes. Pour récupérer automatiquement ces noms, cochez la case Set heading row as column names et cliquez sur Refresh Preview. Cliquez sur Next pour passer à l'étape suivante.

  • A l'étape 4, définissez chaque colonne de votre fichier. L'assistant intègre des algorithmes qui essayent de deviner le type et la longueur des données contenues dans les colonnes du fichier en analysant les premières lignes. La description des données (appelé schéma dans le Studio Talend) peut être modifiée à tout moment. Pour ce scénario particulier, ces informations peuvent être gardées telles quelles.

La métadonnée California_clients est maintenant définie.

Vous pouvez donc l'utiliser dans votre composant d'entrée. Sélectionnez le composant tFileInputDelimited que vous avez déposé dans l'espace de modélisation et sélectionnez la vue Component Settings dans le bas de la fenêtre.

Sélectionnez l'onglet vertical Basic settings. Dans cet onglet, vous trouverez toutes les propriétés techniques nécessaires au composant. Au lieu de les saisir une à une, utilisez la métadonnée que vous venez de créer.

Sélectionnez Repository dans la liste déroulante Property type. Un nouveau champ apparaît : cliquez sur le bouton [...] et sélectionnez la métadonnée correspondante dans la liste, California_clients. Notez que tous les paramètres sont automatiquement renseignés.

A cette étape, terminez votre flux en envoyant tout simplement les données lues dans le fichier d'entrée vers une sortie standard (StdOut).

Pour ce faire, ajoutez un composant tLogRow (de la famille Logs & Errors).

Pour lier ces deux composants, cliquez-droit sur le composant d'entrée et sélectionnez Row > Main. Puis cliquez sur le composant de sortie tLogRow.

Ce Job est maintenant prêt à être exécuté. Pour l'exécuter, sélectionnez la vue Run dans le bas de la fenêtre.

Activez les statistiques en cochant la case Statistics dans l'onglet Advanced settings de la vue Run, puis exécutez le Job en cliquant sur le bouton Run, dans l'onglet Basic Run.

Le contenu du fichier d'entrée apparaît dans la console de la vue Run.

Etape 2 : Mapping et transformations

Vous allez maintenant enrichir votre Job en ajoutant des transformations à la volée. Pour effectuer ces transformations, utilisez le composant tMap dans votre Job. Ce composant est multiple et peut gérer des :

  • entrées et sorties multiples,

  • recherches de référence (simple, produit cartésien, première et dernière correspondance, etc.),

  • jointures (inner join, outer join),

  • transformations,

  • rejets,

  • etc.

Supprimez la connexion reliant vos deux composants via un clic-droit sur cette connexion et en sélectionnant l'option Delete. Puis placez le tMap entre les deux autres composants et reliez-le au composant d'entrée comme vous l'avez fait précédemment.

Enfin, pour lier le composant tMap à la sortie standard, cliquez-droit sur le tMap et sélectionnez Row > *New Output* (Main). Saisissez out1 dans la boîte de dialogue et cliquez sur le composant tLogRow pour créer la connexion. Logiquement, une boîte de dialogue apparaît (pour la rétro-propagation des schémas), ignorez-la en cliquant sur No.

Maintenant, double-cliquez sur le tMap pour accéder à son interface.

A gauche, vous trouverez le schéma (description) de votre fichier d'entrée (row1). A droite, votre sortie est encore vide pour le moment (out1).

Déposez les colonnes FirstName et LastName de la gauche vers la droite dans la colonne Name, comme le montre la capture d'écran suivant. Puis déposez les autres colonnes Address et City dans leur ligne respective.

Puis effectuez les transformations suivantes sur chaque colonne :

  • Changez les données de la colonne Name de la manière suivante : row1.Firstname + " " + row1.LastName

    Cette action concatène les colonnes Firstname et Lastname dans une seule colonne en respectant la syntaxe Java employée.

  • Changez les données de la colonne Address de la manière suivante : row1.Address.toUpperCase()Cette action met l'adresse en majuscule.

Puis supprimez la colonne LastName de la table out1, et augmentez la longueur des colonnes restantes. Pour cela, cliquez sur l'onglet Schema Editor situé en bas de l'éditeur du [Map Editor] et procédez comme suit :

  1. Sélectionnez la colonne à supprimer du schéma, et cliquez sur l'icône représentant une croix rouge.

  2. Sélectionnez la colonne dont vous souhaitez augmenter la longueur.

  3. Saisissez la longueur que vous voulez dans la colonne Length. Dans cet exemple, modifiez la longueur de chaque colonne restante en 40.

Note

Comme les noms et prénoms des clients sont concaténés, il est nécessaire d'augmenter la longueur de la colonne name, afin de prendre en compte la longueur complète du nom.

Aucune transformation n'est effectuée sur la colonne City. Cliquez sur OK pour valider les modifications et fermer l'éditeur.

Si vous exécutez votre Job à cette étape (via l'onglet Run, comme précédemment), vous remarquerez que les changements que vous avez apportés ont été implémentés.

L'adresse a été mise en majuscule et les prénoms et noms ont été regroupés dans une seule colonne.

Etape 3 : Définition du fichier de référence, mapping des données de référence, sélection du mode Inner Join

Définissez la métadonnée correspondant au fichier LosAngelesandOrangeCounties.txt à l'aide de l'assistant, comme vous l'avez fait dans l'étape 1 avec le fichier California_clients.

A l'étape 1 de l'assistant, nommez cette métadonnée LA_Orange_cities.

Puis déposez cette nouvelle métadonnée en haut de l'espace de modélisation, cela créera automatiquement un composant de lecture pointant vers cette métadonnée.

Reliez ce composant au tMap.

Double-cliquez de nouveau sur le composant tMap pour ouvrir son interface. Notez que la table de référence (row2) correspondant au fichier LosAngelesandOrangeCounties.txt, apparaît à gauche de la fenêtre dans la zone Input d'entrée, juste en dessus de votre flux d'entrée principal (row1).

Maintenant, définissez la jointure entre le flux principal et le flux de référence. Dans ce scénario, la jointure est simple à définir puisque la colonne City est présente dans les deux fichiers d'entrée et que les données correspondent parfaitement. Mais si ça n'avait pas été le cas, il aurait été possible de rapprocher les données (padding, changement de casse, etc.) directement à ce niveau.

Pour établir la jointure, déposez la colonne City de la première table d'entrée vers la colonne City de la table de référence. Un lien violet apparaît pour matérialiser cette jointure.

Maintenant, vous pouvez utiliser la colonne County de la table de référence dans la table de sortie (out1).

Enfin, cliquez sur le bouton OK pour valider les modifications et exécutez ce nouveau Job.

La sortie suivante s'affichera dans la console :

Comme vous pouvez le voir, la dernière colonne ne contient que les villes des régions d'Orange et de Los Angeles. Pour les autres villes, cette colonne reste vide. Ceci est dû au fait que par défaut le tMap établit une jointure Left Outer Join. Si vous souhaitez appliquer un filtre permettant de n'afficher que les données pour lesquelles une correspondance a été trouvée par le tMap, cliquez sur le bouton tMap settings et sélectionnez Inner Join dans la liste Join Model sur la table de référence (row2).

Etape 4 : Sortie vers une table MySQL

Votre Job fonctionne à merveille. Pour le finaliser, redirigez le flux de sortie vers une table MySQL.

Pour cela, créez tout d'abord une métadonnée décrivant la connexion à la base de données MySQL. Double-cliquez sur DemoMySQL dans le répertoire Metadata > MySQL du Référentiel (à condition que vous ayez bien importé le projet Demo) pour lancer l'assistant [Metadata].

A l'étape 2 de l'assistant, renseignez les paramètres de connexion à la base de données. Vérifiez la validité de cette connexion en cliquant sur le bouton Check. Enfin, validez vos modifications en cliquant sur Finish.

Déposez cette métadonnée à droite de l'espace de modélisation en maintenant la touche Ctrl enfoncée pour créer automatiquement un composant tMysqlOutput.

Supprimez le composant tLogRow de votre Job.

Reconnectez le flux de sortie out1 du tMap vers le composant tMysqlOutput (Clic-droit > Row > out1) :

Dans l'onglet Basic settings de ce composant :

  1. Saisissez LA_Orange_clients dans le champ Table pour nommer votre table cible qui va être créée à la volée.

  2. Sélectionnez l'option Drop table if exists and create dans le champ Action on table.

  3. Cliquez sur Edit Schema et sur le bouton Reset DB type (le bouton en forme de base de données dans la barre d'outils) pour renseigner automatiquement le type de base de données, si nécessaire.

Exécutez à nouveau le Job. La table cible devrait être automatiquement créée et remplie en moins d'une seconde.

Dans ce scénario, seuls quatre composants différents sont utilisés, mais la Palette en contient plus de 450 (bases de données, Webservices, FTP, etc.).

D'autres composants, réalisés cette fois par la communauté, sont disponibles sur le site communautaire : talendforge.org.

Pour plus d'informations concernant les composants, consultez le Guide de référence des Composants Talend Open Studio for Big Data.