vendredi 28 janvier 2011

Initiation Talend - 4° Partie : le composant tMap

Dans les articles précédents, nous avons vu comment :
Nous voilà enfin prêt à créer notre premier job.
Ce job va lire des données dans une table MySQL (table des produits), lier cette table à un fichier excel (fichier des fournisseurs) par une colonne commune à la table et au fichier (colonne fournisseur), puis extraire quelques données de ces 2 objets dans un fichier CSV. 

Faites clic-droit sur Job Designs puis Créer un job, puis saisissez le nom du job. 
Attention : pas d'espaces dans le nom du job
Une nouvelle fenêtre s'ouvre au milieu de l'espace de travail et la palette des composants présente la liste des composants disponibles.


Ouvrez l'arborescence Schémas des tables de votre connexion définie dans le 2° article.
Cliquez sur la table produit et faites la glisser dans la fenêtre du nouveau job.


Talend vous propose automatiquement une liste de composants correspondant à l'objet sélectionné. Dans notre cas, nous avons sélectionné une table d'une connexion MySQL, et Talend nous propose les composants MySQL :
  • tMysqlInput permet de lire des données à partir d'une une table ou d'une requête MySQL
  • tMysqlOutput permet d'écrire dans une table MySQL
  • ... ... 
Choisissez le composant tMysqlInput et cliquez sur OK


Comme notre connexion est liée à des variables de contexte, Talend nous propose d'ajouter ces variables au job. Elles nous seront utiles au moment de l'exécution. Cliquez sur le bouton Ajoute.
Le composant est placé dans la fenêtre du job et a pris le nom de la table.
Procédez de la même manière pour le fichier Excel : un composant tFileInputExcel est automatiquement inséré dans la fenêtre du job.

Il faut maintenant lier la table au fichier. Si les 2 objets étaient 2 tables d'une base de données, il suffirait de faire une jointure entre elles par une instruction SQL de type « join » (jointure). 
Grâce à Talend, nous allons pouvoir faire cela presque aussi facilement.
Dans la fenêtre Palette, cliquez sur l'onglet Transformation, choisissez le composant tMap et faites le glisser dans la fenêtre du job.
Il suffit de faire un simple clic sur le composant, de déplacer le pointeur vers l'espace de travail du job puis de cliquer à nouveau pour le déposer.


Nous avons donc 2 sources de données en entrée, que l'on va lier grâce au composant tMap.
Les liens dans Talend permettent de définir la logique d'exécution d'un job :
  • déroulement normal du job
  • déroulement en cas d'erreur
  • conditions d'exécution
  • … … 
Dans notre cas, les 2 composants en entrée vont être liés au composant tMap par un lien de type Principal.
Faites un clic-droit sur le composant tMysqlIput (produit) : le menu Ligne permet de choisir un type de lien : choisissez Principal puis cliquez sur le composant tMap.


Faites de même entre le composant tFileInputExcel (Fournisseur) et le composant tMap.


Prenez bien garde à le faire dans cet ordre car le premier lien va définir l'objet principal et le second l'objet sur lequel Talend va faire un « lookup », c'est-à-dire rechercher les valeurs correspondant à la clé (que nous allons définir à la prochaine étape).
Vous voyez un rectangle à fond gris encadrer les objets reliés entre eux : il permet de manipuler ensemble les 3 objets, et réduire ce cadre grâce à l'icône en haut à droite, ce qui est pratique lorsqu'on commence à avoir beaucoup de composants dans l'espace de travail.

Renommez les 2 liens row1 et row2 avec le nom des objets source (respectivement produit et fournisseur) : vous verrez que cela facilite la compréhension dans l'étape suivante.
Nos composants sont reliés, il va falloir maintenant définir la façon dont les objets produit et fournisseur sont liés.
Cliquez sur le composant tMap puis sur l'onglet Component en dessous de l'espace de travail.


Cliquez sur le bouton "…" à droite du libellé Editeur de Map : le fenêtre de « mapping » s'ouvre.
Vous pouvez également double-cliquer sur le composant tMap
La fenêtre de définition du mapping est composée de 3 parties :
  • à gauche : les objets source, 
  • à droite : l'objet cible
  • au milieu : une zone de définition de variables permettant de faire des calculs intermédiaires par exemple
Intéressons nous dans un premier temps à la partie de gauche qui va nous permettre de relier les 2 objets produit et fournisseur.
C'est la colonne fournisseur qui permet de faire le lien : cliquez donc sur la colonne fournisseur de l'objet produit puis glissez la vers la colonne fournisseur de l'objet fournisseur.
Cochez la case Inner join : si la valeur n'existe pas dans le fichier fournisseur, la ligne de la table produit ne sera pas retournée.


Il faut maintenant s'occuper du fichier cible : nous allons par exemple écrire les données dans un fichier CSV. 
Rappelez vous : dans l'article précédent, nous avons défini un modèle de fichier CSV. Nous allons maintenant nous en servir.
Dans les métadonnées, cliquez sur le fichier délimité produit_fournisseur et glissez le dans l'espace de travail.
Une fenêtre de choix du composant s'affiche : choisissez le composant tFileOutputDelimited.
Faites clic-droit sur le composant tMap, choisissez New Output puis cliquez sur le composant  tFileOutputDelimited
Talend vous demande de nommer ce lien : donnez lui le même nom que le fichier cible (produit_fournisseur).
Talend vous demande s'il faut récupérer le schéma du composant cible : cliquez sur Oui (moins on en fait mieux on se porte).
Voici ce que vous devez avoir dans la fenêtre de travail :


Vous remarquez une croix rouge à coté du composant produit_fournisseur : si vous amenez le pointeur de la souris sur l'icône, le message d'erreur est affiché dans une info-bulle : le paramètre (Nom de fichier) est vide alors que ce paramètre est requis.
En effet nous avons glissé un modèle de fichier CSV dans l'espace de travail mais ce modèle ne comportait pas de nom de fichier en sortie. C'est dans le composant  tFileOutputDelimited qu'il va falloir définir ce paramètre.
Cliquez sur le composant puis sur l'onglet Component s'il n'est pas déjà sélectionné, puis cliquez sur le bouton du champ Nom de fichier.
Si le composant est issu du référentiel, Talend vous propose de basculer en mode intégré, c'est-à-dire de récupérer dans le composant les propriétés définies dans le référentiel, notamment le schéma des colonnes du fichier.
Acceptez puis cliquez à nouveau sur le bouton et choisissez l'emplacement du fichier (nommez le fichier produit_fournisseur.csv).
Cliquez sur le bouton à droite du libellé Editer le schéma pour vérifier que le schéma est bien celui défini dans le référentiel : Talend vous affiche par défaut le mode consultation seule car le schéma est issu du référentiel.
Maintenant que le fichier cible est défini, il ne vous reste plus qu'à définir la manière d'alimenter ses colonnes.
Retournez sur le composant tMap et double cliquez dessus : la fenêtre de mapping s'affiche et le fichier produit_fournisseur s'affiche dans la partie de droite.
Encore une astuce pour les fainéants : le bouton Auto Map ! : il relie automatiquement (en fonction de leur nom) les colonnes des objets sources et celles de l'objet cible.
Prenez l'habitude de nommer de manière normalisée les colonnes dans vos schémas et vous pourrez user et abuser de cette fonctionnalité.


N'oubliez pas de valider par le bouton OK.

Ça y est, vous êtes enfin prêts à exécuter votre premier job Talend.
Grand moment de vérité !
Cliquez sur l'onglet Exécuter. Quelques options importantes :
  • Enregistrer le job avant d'exécuter : primordial en cas de gros bug !
  • Temps d'exécution : après plusieurs années d'utilisation de Talend, je suis toujours étonné par les performances affichées lors de l'exécution des jobs
  • Statistiques : vous permet de vérifier que le script se comporte normalement
Notez les variables de contexte sur la gauche : elles ont été créées lors de l'ajout de l'objet produit.
Vous pouvez éventuellement les modifier avant l'exécution.
Puis cliquez sur le bouton Exécuter :
Talend génère d'abord l'ensemble des sources java nécessaires puis les exécute.


Il vous reste maintenant à déployer ce job sous forme de programme java exécutable sur un serveur (ou sur votre PC).
Cette opération est très simple :
Faites un clic-droit sur le job que vous voulez déployer et choisissez l'option Exporter les scripts de Job.
Talend va créer un fichier zip contenant l'ensemble des fichiers permettant une exécution autonome du job.
Choisissez le chemin du fichier zip et laissez les autres options par défaut. Validez en cliquant sur le bouton Terminer.


Ouvrez une fenêtre de commande (cmd sous Windows, terminal sous Linux).
Allez dans le répertoire choisi pour le fichier zip.
Dézippez le fichier dans un répertoire.
Déplacez vous dans le répertoire , où se trouve le fichier _run.bat (pour Windows) ou _run.sh (pour Linux) et lancez cette commande.

Vérifiez que le fichier produit_fournisseur.csv a bien été créé et rempli avec les données attendues.
Veillez à ce que la variable d'environnement « path » contienne le chemin de l'interpréteur java (sous Windows : c:\Program Files\Java\jre6\bin, ou C:\Program Files (x86)\Java\jre6\bin sous Windows 7 64 bits)

Ainsi se termine cette série d'articles d'initiation.
Pour ceux qui ne connaissaient pas Talend, j'espère que cela leur a donné envie de s'y mettre.
Pour les autres, si j'ai du courage et du temps, je ferais une suite, qui traitera des multiples possibilités du composant tMap, de l'optimisation des écritures (composants "Bulk") et des composants dédiés au décisionnel (composants SCD).

N'hésitez pas à me contacter si vous avez des questions, des besoins particuliers : jmd@6it.fr 

vendredi 21 janvier 2011

Initiation Talend - 3° Partie : Référentiel : Fichiers

Dans les articles précédents, nous avons vu comment :
Il est quelquefois utile d'aller chercher des données dans des fichiers, principalement des fichiers excel, qui restent encore beaucoup utilisés dans nos entreprises.
Dans l'arborescence Métadonnées, faites clic-droit sur l'entrée Fichier Excel puis Créer un fichier Excel.

Dans le premier écran, saisissez le nom que vous voulez attribuer au schéma

Dans le 2° écran, cliquez sur le bouton Parcourir... pour définir l'emplacement du fichier
Talend étudie le contenu du fichier et affiche les feuilles présentes et les données présentes dans chaque feuille.
Vous devez alors choisir la feuille qui vous intéresse et passer à l'étape suivante

Dans le 3° écran, si votre tableau excel contient des en-têtes de colonnes, cochez la case Utiliser la première ligne comme libellés de colonnes puis cliquez sur le bouton Rafraîchir l'aperçu.
Si votre tableau ne contient pas d'en-têtes de colonnes, vous pourrez définir le nom des colonnes à l'étape suivante.

Sur le dernier écran, vous pouvez modifier le schéma : noms des colonnes, types de données, …
Par exemple, modifiez le type de la colonne code_postal de Integer en String
N'oubliez pas de modifier le nom du schéma à cette étape : il se nomme « metadata » par défaut


Il est également possible de décrire un schéma sans faire référence à un fichier modèle mais en spécifiant tout simplement ses colonnes.
Créons par exemple un schéma de fichier texte, au format CSV, qui sera utilisé plus tard comme fichier cible d'une extraction de données :
  • Faites clic-droit sur Fichier délimité puis Créer un fichier délimité
  • Donnez un nom à ce nouveau type de fichier puis cliquez sur Suivant
  • Cliquez à nouveau sur Suivant sans choisir de fichier
  • Laissez les options par défaut et cliquez encore une fois sur Suivant
  • Le dernier écran permet de créer manuellement les colonnes du schéma
    Cliquez sur l'icône « + » puis saisissez le nom, le type, la longueur, …

Voilà, tout est prêt pour créer notre job avec efficacité.

Dans le prochain article, nous allons enfin démarrer la création du job et constater la puissance du composant tMap.

dimanche 16 janvier 2011

Interview à propos du pack Performance


Ethan : Bonjour Jean-Marc, peux-tu nous présenter le pack Performance en quelques mots ?
Jean-Marc : Bonjour Ethan. Né de la volonté de réutiliser l’expérience acquise, tant technologique que métier, le pack Performance fournit, dans un package complet, à la fois les indicateurs des métiers de la Supply Chain, leur définition, leurs règles de calcul et l’infrastructure technique permettant de les héberger (datawarehouse), les flux d’alimentation vers le datawarehouse et les tableaux de bord à destination des utilisateurs.

Retrouvez sur Bleent.com l'intégrale de l'interview

vendredi 14 janvier 2011

Initiation Talend - 2° Partie : Tables et requêtes

La 2° étape consiste à importer dans le référentiel Talend la descriptions des tables (tout ou partie) de la base de données.
Faites clic-droit sur la connexion que vous venez de créer puis Récupérer le schéma
Le premier écran permet de filtrer les objets de la base de données que vous voulez importer, en fonction de leur type (tables, vues, synonymes) ou de leur nom (avec le caractère générique « % »).
Le second écran affiche les objets correspondant aux filtres et permet de les sélectionner.
Le dernier écran permet de consulter la description de chaque objet et éventuellement de le mettre à jour si sa structure a changé.

Les structures des tables ou vues de la base de données sont stockées dans le référentiel Talend sous la forme de schémas. Ces schémas seront utilisés par la suite par les composants. Ils sont disponibles dans le référentiel en développant l'arborescence DB Connections / "Votre base de données" / Schémas des tables.

Un schéma est en fait constitué d'une liste de colonnes avec leur type, qui permet à Talend de gérer ces données en mémoire et d'effectuer la correspondance des types de données entre composants.
De la même manière que les tables ont été importées dans le référentiel de Talend, il est possible d'y stocker des requêtes plus ou moins complexes qui seront utilisées par les composants.

Pour créer un schéma lié à une requête dans le référentiel, faites clic-droit sur votre connexion base de données puis Editer les requêtes.

Cette action démarre l'outil SQL Builder, un petit éditeur de requêtes SQL.

Cet outil est constitué de 4 parties :
  • en haut à gauche : la structure de la base de données : elle présente la liste des tables et de leurs colonnes
  • en haut à droite : un petit éditeur permettant de construire graphiquement la requête ou de taper le code SQL
  • en bas à gauche : le résultat de la requête
  • en bas à droite : la description des colonnes de la table sélectionnée dans la 1° partie, ainsi qu'une prévisualisation des données de cette table

Vous pouvez éditer le code SQL de la requête en cliquant sur l'onglet Editer, dans la partie en haut à droite.

Une fois votre requête terminée, cliquez sur l'icône de la disquette sur la barre d'icônes de l'éditeur graphique puis saisissez le nom de votre requête. Elle apparaît alors dans la liste des requêtes de votre connexion BD.
Le schéma de cette requête pourra être utilisé dans un composant Talend.


L'article suivant sera consacré au référencement des sources de données de type Fichier dans le référentiel de Talend.
A l'issue de ce 3° article, nous pourrons démarrer la construction du job proprement dit.


mardi 11 janvier 2011

Le pack Performance en action

Une nouvelle solution de pilotage dédiée aux métiers de la Supply Chain
entreposage, flux, ratios financiers : optimisez tous les leviers de performance de votre chaîne logistique.

Volumes hebdomadaires, Nombre d'heures de préparation, taux d'intérimaires, ...
Nombre de palettes, Taux de remplissage des remorques, Temps d'attente chauffeurs, ...


Le pack Performance vous offre l'ensemble de ces indicateurs, et bien plus encore, dans une vision à 360° de votre entreprise.
Simulez l'effet d'une baisse des volumes sur l'activité de vos entrepôts, l'impact d'une hausse du prix du gasoil sur votre marge brute, le gain sur les charges de personnel produit par une hausse de la productivité, ...
Découvrez un outil innovant, des tableaux de bord interactifs et simples d'utilisation.

Plus d'infos sur http://www.6it.fr/pack-performance.htm

vendredi 7 janvier 2011

Initiation Talend - 1° Partie : les méta-données

Cette suite d'articles va vous permettre, à l'aide d'un exemple concret, d'appréhender les principes de fonctionnement de Talend, d'acquérir les premiers réflexes et bonnes pratiques et de constater avec quelle facilité on peut générer un programme java performant et directement exécutable sur votre poste de travail ou un serveur, sans écrire une ligne de code et sans être un adepte de ce langage (ce qui est mon cas).


Les métadonnées

Un job Talend va la plupart du temps lire et écrire des données, dans des fichiers, bases de données, …

Une bonne pratique est de définir les fichiers, tables, …dans le référentiel Talend plutôt que de les (re)définir pour chaque job ; 3 bonnes raisons à cela :
  • Factoriser vos flux, c'est-à-dire ne pas répéter plusieurs fois la même chose : vous définissez les fichiers, bases de données, les tables, les requêtes une fois et vous les utilisez partout où vous en avez besoin 
  • Partager ces définitions : si vous travaillez en équipe, non seulement vous ne définissez qu'une fois ces données mais vous en faites profiter vos collègues 
  • Associé à la notion de contexte, la constitution d'un référentiel de métadonnées est une fonctionnalité très puissante, qui permet de rendre vos jobs adaptables et est gage de productivité 
Concernant les bases de données, nous définirons dans un premier temps la base de données, puis les tables contenues dans cette base, et enfin les requêtes utilisées pour sélectionner des données situées dans plusieurs tables.
Nous définirons également les fichiers contenant des données en entrée du job.
Enfin nous définirons le fichier en sortie du job.


Connexions aux bases de données

Avant de pouvoir accéder aux tables de votre base de données, il faut définir la manière de s'y connecter.
Nous allons donc définir les paramètres d'accès à la base de données (nom du serveur, de la base, utilisateur, mot de passe, ...).
Afin de pouvoir exécuter le job sur différents environnements (développement, tests, production) sans modifier le job, nous utiliserons les contextes et leurs variables associées.
Dans la fenêtre Référentiel, développez l'arborescence Métadonnées, faites clic-droit sur l'entrée DB Connections puis Créer une connexion.


Le nom de la connexion ne doit pas comporter d'espaces
Utilisez les conventions d'écriture des langages tels que C, C++ ou Java pour le nommage des classes, c'est-à-dire en minuscules avec la première lettre de chaque mot en majuscule, par exemple : BaseSourceMySQL
Vous pouvez renseigner le statut, par exemple : development


Choisissez le type de base de données : nous allons travailler avec MySQL
Choisissez la version de MySQL : elle dépend de votre environnement
Saisissez ensuite l'identifiant de connexion (en général root) et son mot de passe (dépend de votre environnement), le nom (ou l'adresse IP) de la machine qui héberge MySQL (si vous testez sur votre PC, saisissez localhost) et enfin le nom de la base de données sur laquelle vous voulez travailler (pour notre étude de cas, nous utilisons la base talend_chapitre6)
Cliquez sur le bouton Vérifier pour tester les paramètres saisis
Puis cliquez sur Terminer




Les contextes

Utilisation des variables de contexte : elles permettent l'exécution de vos jobs dans des environnements différents. Typiquement, nous utilisons au minimum 3 environnements différents :
  • l'environnement de développement : c'est dans cet environnement que le développeur crée les jobs et les teste
  • l'environnement de tests (ou recette) : les jobs développés par les membres de l'équipe sont intégrés et testés dans cet environnement : on vérifie s'ils fonctionnent correctement ensemble
  • l'environnement de production : il s'agit de l'environnement réel d'exécution des jobs
Les contextes permettent de faire varier les paramètres d'exécution des jobs en fonction de l'environnement dans lequel ils se trouvent. Par exemple: le nom de la machine où se trouve la base de données va prendre 3 valeurs différentes :
  • localhost pour la machine de développement
  • srv-sql-tests pour la machine de tests
  • srv-sql-prod pour la machine de production
Pour créer les variables de contexte concernant votre connexion, cliquez sur le bouton Exporter comme Contexte.


Si vous avez fermé la fenêtre de paramétrage de la connexion, faites clic-droit sur votre connexion puis Editer la connexion, puis cliquez sur Suivant.

Renseignez les informations descriptives de la première page puis cliquez sur Suivant (le nom du groupe de contexte reprend le nom donné à votre connexion)
Vous voyez que les paramètres de votre connexion ont été repris dans les variables correspondantes
Cliquez sur Terminer


Par défaut, seul un contexte est défini : le contexte « Default ». Pour en créer un nouveau ou renommer le contexte par défaut, cliquez sur l'onglet Valeurs en table puis sur l'icône en haut à droite de la liste.
Vous pouvez alors renommer le contexte « Default » et en créer des nouveaux.
Vous pouvez ensuite modifier les valeurs des paramètres dans les différents contextes.


Vous pouvez à tout moment modifier un groupe de contexte : développez l'arborescence Contextes, faites clic-droit sur l'entrée BaseSourceMySQL 0.1 puis Editer le groupe de contexte


L'article suivant sera consacré au référencement des tables et requêtes dans le référentiel de Talend.

lundi 3 janvier 2011

2011 : mobile, web et collaboratif

Je profite de la nouvelle année pour faire un exercice de prédiction, sur les sujets qui m'intéressent.

D'une manière générale, je pense qu'en 2011 deux phénomènes vont se rejoindre :
  • l'adoption des terminaux mobiles - smartphones et tablettes - par le grand public mais aussi par les entreprises va s'accélérer 
  • le déploiement des plate-formes Cloud, privées ou publiques, va également s'amplifier
Ces 2 phénomènes vont rendre nécessaire l'adoption des standards HTML 5 pour la fabrication des sites et des applications (web), afin de ne pas multiplier les versions d'une même application.

Accélération du déploiement des plate-formes Cloud :
  • privées => virtualisation de l'infrastructure informatique des entreprises
  • publiques => les applications ne seront plus forcément hébergées sur des serveurs privés mais sur des plate-formes "As a Service" (Google, Amazon, ....)
Les hébergeurs traditionnels, tels que OVH, ne s'y trompent pas et commencent à proposer des offres de ce type.

D'autre part, Google se doit de répondre à Apple et Facebook
=> Mise en place d'un réseau social, non dédié à une plate-forme, mais agrégation de contenus en fonction des besoins (carnets d'adresses, facebook, viadeo, linkedin, ...)
=> Musique et jeux en ligne
==>> aggrégation de l'ensemble de ces contenus sur navigateur web, mobile

Pour moi, 2011 sera mobile, web et collaboratif