Le but de l'exemple est de remplir une table contenant pour une zone de nom de domaine les informations sur son Top-Level-Domain, son continent et le nom de son pays si il y a lieu.
Nous possédons pour cet exemple :
- une table « zone » contenant toutes les zones sur lesquelles nous souhaitons associer les informations
- une table « zone_tld » avec pour chaque zone le top-level-domain correspondant
- une table « continent_country » avec pour chaque code pays le continent correspondant et le noms du pays.
Nous souhaitons créer une table avec comme information : zon_id, zon_name, zon_tld, zon_extension, zon_country_name, zon_continent.
Creation des Metadonnées
Tout d'abord, il faut créer une connexion à la base de données comme indiqué sur l'image ci-dessous.
Ensuite, il faut insérer les tables que nous souhaitons utiliser. Il suffit de sélectionner la base que nous venons d'ajouter et de cliquer sur "Retrieve Schema" afin de choisir les tables dans la liste qui est proposée.
Les tables ajoutées apparaissent dans l'arborescence de gauche.
Création d'un Job
Il est maintenant nécessaire de créer un job. Pour cela, rien de plus simple : sélectionnez "Job Design", clic droit puis "Create Job". Il ne vous reste plus qu'a indiquer le nom du job.
Insertion des tables à utiliser
Nous allons maintenant insérer dans le job les tables dans lesquelles nous souhaitons récupérer les informations. Il suffit d'aller dans les metadata que nous avons créées et de glisser/déposer les tables à utiliser dans la zone de travail. Il faut ensuite sélectionner le type d'utilisation de la table, si c'est une entrée depuis cette table (Input) ou une sortie vers cette table (Output). En gros, Input pour faire des SELECT et Output pour des INSERT ou UPDATE.
Dans notre cas, nous insérons les tables comme ci-dessous :
Transformation sur un champ
Dans la table zone_codump, il y a toutes les zones que nous souhaitons traiter. Les zones sont par exemple : FR, TM.FR, COM.FR, ASSO.FR, PRESSE.FR ... Notre but est de récupérer la dernière extension des zones pour l'indiquer dans le champ zon_extension de la table finale.
Pour cela, nous allons utiliser l'outil tMap afin de gérer cette transformation. Il suffit de sélectionner dans la liste de droite l'outil "tMap" de la catégorie "Processing" puis de le déposer dans l'espace de travail. Il faut ensuite créer le lien entre la table zone_codump et le tMap.
Double cliquez sur le tMap afin de le configurer puis cliquez sur le "plus" de la colonne de droite pour ajouter une sortie. Il ne vous reste plus qu'a indiquer le nom de la sortie.
Par de simples glisser/déposer, ajoutez les colonnes que vous souhaitez récupérer. Dans notre cas, nous prenons zon_id et zon_name, puis nous ajoutons un champ (en cliquant sur le + de l'encadré en bas à droite) afin de récupérer l'extension de la zone.
Le champ zon_extension que nous venons de rajouter est pour le moment vide. En cliquant sur le bouton "..." de la cellule Expression de la ligne correspondant à notre champ, nous allons pouvoir inscrire du code java qui va nous permettre de récupérer l'extension. Dans notre cas nous utilisons le code suivant :
row1.zon_name.lastIndexOf('.') != -1 ? row1.zon_name.substring(row1.zon_name.lastIndexOf('.')+1) : row1.zon_name
Nous avons donc maintenant pour chaque ligne : zon_id, zon_name et zon_extension.
Jointure entre des tables
Afin de retrouver pour chaque zone le top-level-domain, le continent et le nom du pays, nous avons besoin de lier les tables entre elles. Pour faire cette opération nous allons encore utiliser l'outil tMap. Procédez comme à l'étape précédente afin d'ajouter le composant puis liez le composant avec les différentes tables.
Double cliquez sur le tMap afin de le configurer. Pour créer les jointures il suffit de prendre un champ et de le déposer dans la cellule Expr. Key. Les jointures ne sont pas des "inner join" par défaut, il est possible de paramétrer la jointure en utilisant le menu "Unique Match" et la case à choser "Inner Join". Une fois les jointures mises en place nous arrivons à l'état ci-dessous.
Insertion des données dans une table
Nous allons maintenant gérer les données qui vont être insérées dans la table finale. Pour cela nous commençons par créer le lien de sortie du dernier tMap puis nous le lions avec la dernière table. A la question "Do you want to get the schema of the target component ?" nous répondons "Yes", cela permet de pré-remplir les champs à insérer dans la sortie "Out" que nous avons créée.

Il ne nous reste plus qu'a glisser/déposer les informations que nous souhaitons insérer dans chaque champ.
Pour gérer le fait que toutes les zones n'ont pas forcement de continent ou de nom de pays associé nous mettons une petite condition sur ces deux champs afin de leur définir une valeur. Nous pouvons par exemple faire pour le champ zon_continent : row3.continent != null ? Row3.continent : "Non défini"
Lancement du job
Notre Job est maintenant terminé et ressemble à :
Pour lancer le job il suffit d'aller dans l'onglet Run de l'encadré du bas et de cliquer sur "Run". Il est possible de faire quelques configurations comme cocher la case "Statistique" qui permettra d'afficher l'avancement du processus en indiquant le nombre de lignes traitées.














Commentaires
Succinct mais pratique pour démarrer avec quelques bases simples