Rapport de Stage M2TI ROUISSI Mohamed (2)
Short Description
Download Rapport de Stage M2TI ROUISSI Mohamed (2)...
Description
Rapport de stage de fin d’études Stagiaire développement décisionnel au sein de BIPP Consulting
Responsable BIPP Consulting: Laurent-Xavier Gusse Responsable Tuteur UCBL: Mohand-Said Hacid Etudiant: Mohamed Rouissi
27/08/2012 BIPP Consulting Mohamed Rouissi
Remerciementt : Remerciemen Ce projet de fin d’étude s s’est déroulé au sein de l’entreprise BIPP Consulting dirigé par Mr Laurent-
Xavier GUSSE. Je tiens à adresser mes remerciements aux membres de la société que j’ai pu côtoyer durant la
période de mon stage et qui ont su rendre mon travail agréable. Plus particulièrement, je tiens à remercier Mr Laurent-Xavier GUSSE et Mr Mohand-Said HACID qui m’ont co-encadré durant ce stage et qui m’ont apporté leur aide ainsi que des remarques précieuses
qui ont permis de faire aboutir ce travail. J’exprime également mes vifs remerciements à mon enseignant Mr Fabien DUCHATEAU, pour l’honneur qu’il m’a fait en présidant mon jury de mémoire de fin d’études.
Résumé : En tant que stagiaire, j’ai eu l’occasion de participer à des projets de grande envergure en
développement spécifique SIAD (Système d’Information d’Aide à la Décision) dans différents domaines d’activité tel s que la pharmaceutique et le pneumatique. Ce rapport présente donc l’entreprise d’accueil BIPP Consulting en précisant ses secteurs d ’activité
dans sa spécialité qui est le pilotage de la performance. Durant le stage effectué au sein de cette entreprise, j’ai travaillé sur la phase d’intégration de données dans les systèmes décisionnels en utilisant l’ETL Talend dans sa version gratuite aussi bien que la version entreprise et qui seront
présentées en détail dans ce rapport ainsi que d’autres outils logiciels tels que SGBD (Oracle 11g, MySql 5), SAP Business Object, Object, SVN, Mantis, etc. Ces derniers ont permis de bien aboutir le travail pendant les missions 1 et 2 de ce stage. Un exemple d’un traitement Talend de la première mission sera présenté tout en indiquant les choix techniques (ex : utilisation de l’ODS, ELT, routine s, etc.) ainsi que les solutions retenues pour gérer les problèmes rencontrés.
Page 2 sur 34
Remerciementt : Remerciemen Ce projet de fin d’étude s s’est déroulé au sein de l’entreprise BIPP Consulting dirigé par Mr Laurent-
Xavier GUSSE. Je tiens à adresser mes remerciements aux membres de la société que j’ai pu côtoyer durant la
période de mon stage et qui ont su rendre mon travail agréable. Plus particulièrement, je tiens à remercier Mr Laurent-Xavier GUSSE et Mr Mohand-Said HACID qui m’ont co-encadré durant ce stage et qui m’ont apporté leur aide ainsi que des remarques précieuses
qui ont permis de faire aboutir ce travail. J’exprime également mes vifs remerciements à mon enseignant Mr Fabien DUCHATEAU, pour l’honneur qu’il m’a fait en présidant mon jury de mémoire de fin d’études.
Résumé : En tant que stagiaire, j’ai eu l’occasion de participer à des projets de grande envergure en
développement spécifique SIAD (Système d’Information d’Aide à la Décision) dans différents domaines d’activité tel s que la pharmaceutique et le pneumatique. Ce rapport présente donc l’entreprise d’accueil BIPP Consulting en précisant ses secteurs d ’activité
dans sa spécialité qui est le pilotage de la performance. Durant le stage effectué au sein de cette entreprise, j’ai travaillé sur la phase d’intégration de données dans les systèmes décisionnels en utilisant l’ETL Talend dans sa version gratuite aussi bien que la version entreprise et qui seront
présentées en détail dans ce rapport ainsi que d’autres outils logiciels tels que SGBD (Oracle 11g, MySql 5), SAP Business Object, Object, SVN, Mantis, etc. Ces derniers ont permis de bien aboutir le travail pendant les missions 1 et 2 de ce stage. Un exemple d’un traitement Talend de la première mission sera présenté tout en indiquant les choix techniques (ex : utilisation de l’ODS, ELT, routine s, etc.) ainsi que les solutions retenues pour gérer les problèmes rencontrés.
Page 2 sur 34
Table des matières I.
Introduction: ............................................................ .................................................................................................................................. ........................................................................ .. 5
II.
Contexte de stage : ............................................................. .......................................................................................................................... ............................................................. 6
III.
............................................................................................ 7 Description de la société d’accueil : ............................................................................................
IV.
Environnement technique : ...................................................................... ......................................................................................................... ................................... 8
III.1.
V.
......................................................................... ............. 8 Architecture de l’environnement technique : ............................................................
III.2.1
SVN : .................................................................... .............................................................................................................................. .......................................................... 10
III.2.3
SGBD .................................................................... .............................................................................................................................. .......................................................... 10
III.3.1
.................................................................................................... ........... 11 11 Qu’est-ce qu’un ETL ? .........................................................................................
III.3.2
En quoi cela peut-il être utile pour une entreprise? ..................................................... 12
III.3.3
Pourquoi utiliser un ETL au lieu de coder dans le langage de son choix? ..................... 12
III.3.4
Choix de la solution Talend: .................................................................... .......................................................................................... ...................... 13
Missions effectuées : .......................................................... ..................................................................................................................... ........................................................... 15 IV.1
Mission 1 ..................................................................... ............................................................................................................................... .......................................................... 15
V.1.2
...................................................................................................... ................................. 15 Domaine d’activité : .....................................................................
V.1.3
Déroulement de travail : ........................................................... ............................................................................................... .................................... 15
V.1.4
Traitements effectués et volumétrie des données : ..................................................... 16
V.1.5
Développement générique et conventions pratiques :................................................. 16
V.1.6
Réalisation de la documentation : ........................................................ ................................................................................. ......................... 16
V.1.7
Problèmes rencontrés : ............................................................. ................................................................................................. .................................... 17
V.1.8
Conclusion : ......................................................... ................................................................................................................... .......................................................... 18
IV.2
Mission 2 ..................................................................... ............................................................................................................................... .......................................................... 19
IV.2.1
...................................................................................................... ................................. 19 Domaine d’activité : .....................................................................
IV.2.2
Déroulement de travail : ........................................................... ............................................................................................... .................................... 19
IV.2 .3
Optimisation des traitements :............................................................. :...................................................................................... ......................... 19
IV.2.4
Outils de travail : ............................................................ ........................................................................................................... ............................................... 20
IV.2.5
Formation effectuée:.................................................................... ..................................................................................................... ................................. 20
IV.2.6
Problèmes rencontrés : ............................................................. ................................................................................................. .................................... 20
IV.2.7 Rédaction de la documentation : ............................................................... ........................................................................................ ......................... 21 IV.2.8 IV.3
Conclusion : ......................................................... ................................................................................................................... .......................................................... 21
Exemple détaillé : ................................................................... .................................................................................................................. ............................................... 22
IV.3.1
Flux en entrée : ............................................................... .............................................................................................................. ............................................... 22
IV.3.2
Les données source : .................................................................... ..................................................................................................... ................................. 22
IV.3.3
Description du job : ...................................................................... ....................................................................................................... ................................. 22 Page 3 sur 34
VI.
IV.3.4
Gestion des rejets : ........................................................................................................ 24
IV.3.5
Utilisation d’une table temporaire (ODS) : .................................................................... 25
IV.3.6
Gestion des annule et remplace : .................................................................................. 28
IV.3.7
Alimentation des tables finales : ................................................................................... 28
IV.3.8
Variables de contexte utilisées : .................................................................................... 30
IV.3.9
Utilisation des routines Talend:..................................................................................... 31
Conclusion : ............................................................................................................................... 32
Page 4 sur 34
I.
Introduction: Afin de valider mon cursus universitaire et plus précisément mon master 2 Technologies de
l’information et web parcours professionnel, la réalisation d’un travail pratique d’au moins 5 mois est indispensable, et c’est dans ce cadre que s’intègre mon stage réalisé au sein de la société BIPP Consulting. Le travail relève essentiellement d’une application pratique des notions théoriques et
compétences acquises durant la formation universitaire. Passionné par l’informatique décisionnelle, j’ai natur ellement orienté ma recherche du stage vers les sociétés spécialisées dans ce domaine. Et c’est au sein de la société BIPP Consulting que j’ai 1 eu l’occasion de réaliser ce stage et de découvrir le domaine de BI (Business Intelligence) ainsi que
ses activités d’un point de vue professionnel.
Les objectifs de ce stage étaient les suivants: -
Découvrir le monde professionnel
-
L’application pratique des connaissances théoriques.
-
Avoir une expérience valorisante dans le domaine de BI.
-
Apprendre à travailler en équipe.
J’ai donc intégré une équipe de 6 personnes en tant que développeur, en charge de missions
suivantes : 2
-
Acquérir des compétences en intégration des données sous l’ETL Talend.
-
Participation à des projets décisionnels en interne ainsi qu’en externe (chez les clients).
-
Rédaction de la documentation technique sur les activités traitées.
Dans ce document nous décrirons le contexte de stage dans lequel nous présenterons l’informatique décisionnelle ainsi que la phase d’intégration de données. Ensuite, nous donnerons
une description globale de la société d’accueil BIPP Consulting et de ses activités. Puis, nous détaillerons l’environnement technique et logiciel de travail et dans lesquels le développement a été fait tout le long de stage. Après, nous aborderons les missions effectuées, et notamment nos différentes réalisations avec les problèmes rencontrés et le savoir-faire que nous avons pu acquérir. De plus, un exemple d’une réalisation faite pendant une des missions sera présenté en détail. Enfin,
nous terminerons par u ne conclusion dans laquelle nous mettrons en relief les acquis à l’issue de ce stage. 1
Définition disponible dans le glossaire. Définition disponible dans le glossaire.
2
Page 5 sur 34
II.
Contexte de stage :
Dans le cadre de mon stage, je me suis intéressé à l’informatique décisionnelle ou BI (Business
Intelligence) qui est de plus en plus répandue sur le marché et qui représente l’un e des spécialités de l’informatique en forte croissance de nos jours. Ce fait s’expliqu e par les applications importantes du
BI dans de nombreux domaines. L’informatique décisionnelle est la science informatique qui permet a ux responsables de la stratégie d’une entreprise d’avoir une vue d’ensemble de leurs activités et de décider la stratégie dans le
moyen et le long terme. Elle consiste à collecter, intégrer et restituer les données matérielles ou immatérielles d’une entreprise. Un système d’information décisionnel utilise en règle générale un
entrepôt de données (ou Data Warehouse 3) pour stocker des données transverses provenant de plusieurs sources hétérogènes. Un projet décisionnel est généralement composé de 3 phases principales :
La phase de collecte qui consiste à chercher et collecter les données dans des sources hétérogènes sous différents formats
La phase d’intégration qui à son tour permet d’extraire les données des sources et l es insérer
après transformation dans l’entrepôt de données.
La phase de restitution de données qui permet d’exploiter les données du Data Warehouse en offrant la possibilité de faire du reporting, des requêtes ainsi que de l’analyse 4 OLAP (Online Analytical Processing) sur les données.
Dans le stage réalisé, j’ai travaillé sur la phase d’intégration des données, fonction permise par les outils d’Extraction/Transformation/Loading (ETL). Dans notre cas nous avons utilisé l’outil Talend. L’intégration est un prétraitement ayant pour but de faciliter l’accès aux données centralisées , aux
outils d'analyse et de restitution pour la prise de décision. Ainsi, l'intégration consiste à concentrer les données collectées dans un espace unifié, dont le socle informatique essentiel est l'entrepôt de données. Ce dernier est l’élément central du dispositif dans le sens où il perme t aux applications d’aide à la décision (par exemple l’analyse OLAP) de bénéficier d'une source d'info rmation homogène, commune et fiable. Cette centralisation permet surtout de s’abstraire de la diversité des sources de
données.
3
Définition disponible dans le glossaire. Définition disponible dans le glossaire.
4
Page 6 sur 34
III.
Description de la société d’accueil :
BIPP Consulting est une société de conseil et de service, spécialisée dans le domaine du pilotage de
la performance. Elle intervient sur l'ensemble des problématiques métiers (Contrôle gestion, vente, RH, logistique...) et accompagne ses client s dans la mise en œuvre de leur solution de reporting, pilotage, analyse, simulation et élaboration budgétaire. 5
Pilotage Performance & Elaboration budgétaire CRM Organisation Performance du SI
Figure 1 : Pilotage Performance - Elaboration budgétaire - Gestion de la relation Client (CRM) - Organisation Performance SI
Les services de pilotage de la performance offerts par BIPP Consulting permettent aux entreprises de piloter leurs activités avec des indicateurs pertinents pour réussir la mise en œuvre de leur stratégie. BIPP Consulting est présente sur Lyon et intervient sur le quart Sud Est de la France. Elle est
partenaire intégrateur des principales solutions décisionnelles sur le marché : QlikView, Cegid, blueWay…
5
http://www.bipp-consulting.fr/index.php?option=com_content&view=article&id=26&Itemid=57
Page 7 sur 34
BIPP Consulting se positionne comme le partenaire capable d'assister les directions fonctionnelles et
informatiques dans la définition, la refonte du processus de gestion opérationnelle et dans la réussite de leur projet de pilotage de la performance. À l’aide de sa forte expertise fonctionnelle et technologique, BIPP Consulting offre des services en parfaite adéquation avec les attentes et les contraintes des principaux clients représentés par les PME et Grands Comptes. Parmi les attentes des clients assurées par BIPP Consulting on peut citer: -
Amélioration du processus décisionnel de la société en offrant des systèmes performants qui aident à la prise de décision.
-
Génération des rapports précis sur les différentes activités des sociétés clientes.
-
Amélioration des relations avec les clients
-
Augmentation des revenus
Après avoir fait une présentation globale de la société d’accueil BIPP Consulting, je vais parler dans le chapitre suivant de l’environnement technique de travail mis en place dans la société et dans lequel le travail était réalisé.
IV.
Environnement technique :
Dans ce chapitre, on présente la composition et l’architecture de l’environnement technique de travail, ainsi qu’une description des logiciels utilisés tout le long de mon stage.
III.1. Architecture de l’environnement technique : Avant de commencer un projet informatique il est nécessaire de définir l’environnement de travail. Pour les projets dans lesquels je suis intervenu le long de mon stage, le travail a été réalisé sur trois environnements différents à savoir, l’environnement de développement (DEV), de pré production (PREPROD) et de production (PROD).
L’environnement de développement: C’est un serveur Windows, sur lequel sont effectués
les développements et les premiers tests sur une base de test. I l n’est accessible que par les développeurs au sein de l’entreprise. L’avantage avec ce type de développement est que le projet reste localisé, sur un endroit unique ce qui permet l’accessibilité et la sécurité des données dans le cas d’ une panne matérielle.
L’environnement de pré-production: C’est un serveur distant qui stocke les premières
livraisons des versions du projet ainsi qu’une base de données de qualifications.
L’environnement de production: C’est un serveur distant dans lequel seront livrées les
versions finales des jobs, il est accessible par le client. La figure suivante présente l’architecture de l’environnement de travail :
Page 8 sur 34
développeur
checkIn/ checkOut
Commit: sauvegarder les changements sur le projet, tout le monde peut désormais voir les modifications ré alisées Serveur de code
commit
développeur
Intégration continue ou nocturne Déploiements
développeur Développement des premières versions et réalisation des tests
Testeurs Environnement de développement
Déploiements Réalisation des tests sur une base de qualification dans un e nvironnement le plus similaire possible à celui du client
Testeurs Environnement de pré production
Mise en production Livraison des ve rsions finales, cet environnement est accessible par le client
Testeurs
Environnement de production Livraison
Client
Figure 2 : Architecture de l'environnement de travail
Il est possible de définir plus d’environnement, suivant les besoins, comme par exemple un
environnement de performance (PERF) où serait testé le projet avec un maximum de données pour vérifier la montée en charge.
Page 9 sur 34
III.2
Technologies logicielles utilisées :
Parmi les logiciels utilisés pendant le stage : III.2.1 SVN :
Nous avons utilisé SVN (SubVersioN) comme système de gestion de versions (versionning) pour la gestion de versions centralisée. Cela permet de travailler à plusieurs sur un même code sans souci de perte de code si un même fichier est modifié par plusieurs personnes en même temps. Le développement s’effectue dans le dossier « trunk ».
À chaque contribution, les modifications effectuées sont répercutées sur le trunk tout en traçant les modifications effectuées par rapport à la version précédente. Il est ainsi possible de revenir à tout moment à une version antérieure du programme car à chaque contribution sur le serveur centralisé est associé un numéro de version SVN.
III.2.2 Mantis
Mantis est un système de suivi de bug open source sous licence GPL (GNU General Public License). Il permet d’enregistrer tout dysfonctionnement de l’application, qu’il soit d’origine fonctionnelle ou technique, que ce soit un problème graphique ou une simple coquille. Les tickets créés dans Mantis sont par la suite affectés à des développeurs pour procéder à la détection de l’origine du dysfonctionnement et à la mise en œuvre de corrections nécessaires. L’état du ticket évolue alors progressivement d’un é tat « nouveau » à un état « fermé » en passant par exemple par les états « affecté », « résolu » et « livré». Mantis permet aussi d’obtenir automatiquement un « changelog » (liste des bugs corrigés par
version du logiciel) ainsi que des statistiques qui peuvent concerner le nombre de bugs soumis ou corrigés par utilisateur, temps moyen de résolution des bugs, ou l’efficacité de la résolution des bugs (les bugs peuvent être rouverts si la correction est erronée). III.2.3 SGBD
a)
Oracle 11g :
C’est l’un des deux SGBD utilisés pendant mon stage . C’est un SGBDR très puissant utilisé pour
stocker et gérer les données de l’entrepôt de données dans le système d’information décisionnel. Il propose aux professionnels de l’informatique d es outils de base permettant de fournir efficacement un volume important d’informations avec une meilleure qualité de service . b)
MySQL 5 :
Un SGBD open source utilisé pour créer et gérer des bases de données dans le s ystème d’information décisionnel.
Page 10 sur 34
Il est devenu l’un des SGBD open source le plus populaire en raison de ses performances, de sa fiabilité et de sa simplicité d’utilisation6.
III.3 Plateforme ETL : III.3.1 Qu’est -ce qu’un ETL ?
ETL, est l’acronyme d’Extract, Transform, Load: Extract : extraire les données de multiples sources de données qui peuvent être hétérogènes (Base
de données, CSV, XLS, ERP, web service …) Transform : transformer les données provenant des sources (ex : modifier le format de la date). Load :
charger
les
donnée s
dans
n’importe
quel
format.
(Base
de
données
Oracle/MySQL/PostgreSQL/…, Fichier Excel/CSV/…)
Figure 3 : Schéma d’un ETL, et de son fonctionnement
6
http://www.mysql.fr/why-mysql/white-papers/
Page 11 sur 34
III.3.2 En quoi cela peut-il être utile pour une entreprise? L’utilisation des traitements ETL dans une entreprise peut s’avérer importante, en raison même de la multitude des besoins. Des exemples d’utilisation sont :
Récupération des données sur un site internet de façon automatisée et leur insertion dans une base de données. Centralisation et consolidation des données en éliminant celles qui sont invalides. Alimentation d’une base de données ou d’ un entrepôt de données d’un système d’information décisionnel par des données qui proviennent de sources hétérogènes. Élimination des erreurs provenant des sources de données et nettoyage de ces dernières à l’aide d’un système automatisé.
Synchronisation des données avec d’autres sources.
Alimentation d’une base de données d’analyses OLAP pour une utilisation décisionnelle.
III.3.3 Pourquoi utiliser un ETL au lieu de coder dans le langage de son choix?
Le codage dans le langage de son choix semble être une solution intéressante, car elle permet de rester au plus près des spécificités métiers des donnés à traiter, tout en s’affranchissant des contraintes liées à l’achat et l’utilisation d’un ETL propriétaire. Malheureusement on se rend vite compte sur un gros projet que les coûts de débogage et surtout de maintenance sont beaucoup plus importants qu’un traitement fait sous ETL. Comme tout bon programmeur le sait, inutile de réinventer la roue! L’ETL offre une panoplie
de composants remplaçant de nombreuses lignes de code. Exemple de composants Talend:
-
Les composants de connexion à une base de données ( tOracleConnection , tMysqlConnection ...) Les composants de mappage tMap qui offrent la possibilité de diriger les données d’une ou plusieurs sources vers une ou plusieurs sorties. Il permet aussi de réaliser
les jointures. Les composants de lecture et d’écriture d’un fichier. Etc.
L’ETL donne une vision graphique du job (un traitement est appelé job sous Talend) et permet ainsi en u n coup d’œil de comprendre le bu t du traitement ainsi que de repérer l’endroit où appliquer une modification quelconque si le traitement respecte bien les
conventions de développement ETL. Voici quelques conventions sur les bonnes pratiques de développement sous l’ETL Talend: Quelques conventions :
-
Les lignes d’un traitement vont de gauche à droite (horizontal).
Page 12 sur 34
-
Tous les composants doivent être nommés.
-
Les composants d’entrée ou de sortie d’une base de données (ex : tOracleInput , tOracleOutput) prennent le nom de la table correspondante.
-
Les liaisons entre les blocs du type OnSubjobOK ou OnComponentOK vont de haut en bas. Etc.
L’utilisation d’un ETL permet d’avoir un gain de temps énorme et c’est pour cela que les
grands du marché ont adopté ces solutions.
III.3.4 Choix de la solution Talend:
Talend est une plateforme d’intégration de données puissan te offrant de bonnes performances sur le
marché des ETL. Talend propose une suite logicielle écrite en Java permettant de bien gérer l’intégration de données.
Les logiciels proposés par Talend:
Talend Open Studio (outil de base)
Talend Integration Suite (fonctionnalités plus avancées que TOS, travail collaboratif, etc.)
Talend On Demand (Intégration de données en mode Saas)
Talend Open Profiler (fonctionnalités avancées pour l’analyse et le profilage de données)
Talend Data Quality (facilite le travail de nettoyage des données : doublons, suppression de données erronées)
Pour les versions utilisées au développement pendant le stage sont : a) TIS (Talend Integration Suite):
C’est la version entreprise de l’ETL Talend, Studio enrichi fonctionnellement
Gestion des environnements et des déploiements
Référentiel partagé
Page 13 sur 34
Supervision
Version avancée MDx et RTx
Module qualité de données
Open Profiler : représentation en amont, indicateurs
Data Quality: Correction, nettoyage, enrichissement, rapport
b) TOS (Talend Open Studio):
C’est une version gratuite très complète qui permet aux entreprises ne nécessitant que très peu de
traitements de les développer sur la version gratuite.
Page 14 sur 34
V.
Missions effectuées :
IV.1 Mission 1 Après avoir acquis quelques compétences sur l’ETL Talend chez la société d’accueil, je suis parti en une mission chez un client qui a duré 2 mois. Dans cette mission j’ai réalisé un projet d’intégration de données dans un entrepôt de données MySql au sein d’un gros projet décisionnel. V.1.2 Domaine d’activité :
La société cliente travaille pour le compte d’un grand producteur des produits pneumatiques. V.1.3 Déroulement de travail : J’ai réalisé une première réunion avec le chef de projet, un administrateur système et développeur SI, dans laquelle ils m’ont fait une description générale de projet à savoir, le type des données à intégrer, le projet dans lequel s’intègre le travail, les conventions de développement et une vue globale du modèle de données (schéma conceptuel, contrai ntes …). Vu l’absence d’un document de spécification détaillé ou d’un cahier de s charges qui aurait pu faciliter le développement des jobs d’intégration, j’ai été amené à rédiger un document de
spécification qui précise les contrôles de chargement ainsi que les actions à faire dans chaque cas de test. Ce document a été transmis au maître d’ouvrage pour qu’il puisse le valider. Durant mon intervention dans le projet, j’ai fait des réunions hebdomadaires avec le client (Lundi de
chaque semaine) durant lesquelles on a mis le point sur l’avancement de travail et ce qu’il reste à faire, ainsi que les éventuelles évolutions des données telles que : la modification de la structure, l’ajout d’un fichier, l’ajout d’une contrainte sur les données etc. Après avoir reçu la validation du document de spécification de la part du client, j’ai entamé le
développement des jobs d’intégration des fl ux sources par la création du job de paramétrage de la base de données. Voici un petit descriptif de ce job : Flux en entrée : Fichier Excel (CONTEXT_ALL_ALL_ALL_20120605.xls) Description :
Ce job permet d’alimenter les tables de paramétrage dans la base de données, il est constitué de
plusieurs blocs. Chaque bloc charge une table à partir d’une feuille du fichier Excel en entrée. Contrôle du chargement :
-
Contrôle sur le type des données (Date valide, type numérique, nom du flux valide …) Contrôle sur les champs nuls. Rejet des lignes qui contiennent des champs non nullable qui sont nuls à savoir les clefs primaires ou étrangères. Alimentation de la table de rejet t_rejected_context dans le cas d’un test i nvalide
Page 15 sur 34
Figure 4 Bloc d'alimentation de la table t_market_zone
Afin de faciliter l’analyse des rejets et en plus des données de la ligne, on stocke aussi un code d’erreur et un message d’erreur significatif, qui seront affiché s sur des rapports pour l’utilisateur final. Connexion à la base de données :
Deux connexions à la base de données sont utilisées, une pour la table de rejet et l’autre pour les
autres tables. Ce mécanisme nous a permis de décider le rejet ou non du fichier à la fin du chargement. V.1.4 Traitements effectués et volumétrie des données :
Le projet réalisé contient trois grandes parties, à savoir : -
Intégration des flux historiques Intégration des flux non historique Documentation technique du travail
Au total le nombre de jobs Talend réalisé est 17, et le nombre de lignes par fichier a atteint des millions de lignes dans quelques flux historiques qui contiennent des données s’étalant sur 4 ans ou
plus.
V.1.5 Développement générique et conventions pratiques : Afin d’assurer la généricité des jobs et une éventuelle exécution sur différentes plates-formes (Windows, Unix, Mac OS), j’ai eu recours à l’utilisation des traitements contextuels avec l’utilisation
des variables de contexte qui seront chargées directement à partir des fichiers texte. Par ailleurs, le respect des conventions et des bonnes pratiques de développement sous l’ETL Talend a permis d’avoir des jobs clairs et lisibles qui offrent la possibilité de comprendre en un coup d’œil le but du traitement ainsi de repérer l’endroit où ap pliquer la modification.
V.1.6 Réalisation de la documentation : Comme dans n’importe quel projet informatique, la documentation est indispensable puisqu’elle
permet de comprendre le travail réalisé avec plus de détails, et aide aussi les autres intervenants sur le projet à suivre le travail ou l’améliorer dans le cas d’un besoin particulier.
Page 16 sur 34
En se basant sur des exemples de documentation déjà faites, j’ai livré à la fin de mon intervention sur
le projet un document décrivant les traitements réalisés en détail et en incluant des exemples d’utilisation de chaque job.
V.1.7 Problèmes rencontrés :
Parmi les problèmes rencontrés durant le travail dans la première mission :
Lors de développement des jobs, il n’y avait pas suffisamment de contrôle sur les données
source fournies par le client, ce qui a augmenté énormément la charge de contrôle réalisé par les jobs, et a donné un taux de rejet énorme dans chaque flux.
Résultats inattendus
Une perte de temps considérable
Les flux en entrée ne sont pas structurés et contiennent des données hétérogènes même s’il s’agissait du même type de flux, et cela dû au fait que les fichiers proviennent directement
du client sans être mis sous le contrôle du responsable. En plus, au début de mon intervention je n’ai pas suivi une bonne méthodologie de travail, c'est-àdire qu’après des jours de travail je n’ai pas mis au courant le responsable du projet sur l’état de la
base de données (Lignes intégrées , lignes rejetées, taux d’intégration…).
Résultat inattendu au niveau du nombre de lignes intégrées.
Travail intensif pour récupérer le retard.
Remonté du problème au responsable.
Export régulier de la base de données à la fin de chaque modification pour éviter « l’effet Tunnel », ce qui a provoqué une pression importante par le client.
L’autre élément qui m’a posé quelques problèmes est la mise en place tardive des serveurs de développement. Parce qu’il faut signaler que j’ai commencé le travail en local sur ma machine, chose qui m’a empêché d’effectuer des tests su r des gros volumes de données.
Tests insuffisants
Plantage de la machine qu’elle n’a pas suffisamment de mémoire vive.
Non-centralisation du projet et le risque de perte des versions.
Modifications importantes sur les données source et la structure des flux par le client qui ont engendré des impacts remarquables sur les jobs d’intégration.
Maintenance couteuse Page 17 sur 34
Perte du temps remarquable
V.1.8 Conclusion : La première mission était un vrai lancement dans l’environnement professionnel pendant laquelle j’ai
amélioré mes capacités en matière de relationnel avec le client puisque j’étais en contact direct avec lui dans les réunions ou par e-mail. Après avoir fini ma mission, je suis resté à disposition du client afin de maintenir les éventuels bugs identifiés lors de la phase de test.
Page 18 sur 34
IV.2 Mission 2 La deuxième mission était une intervention sur un projet dans la société d’accueil BIPP Consulting.
Ma tâche dans le projet était la réalisation des traitements d’intégration des données sous l’ETL Talend la version entreprise TIS dans un entrepôt de données Oracle 11g. IV.2.1 Domaine d’activité :
Le projet était la réalisation d’un système d’information décisionnel pour le compte d’un client dont le domaine d’ activité est la pharmaceutique.
IV.2.2 Déroulement de travail : J’ai réalisé une réunion avec l’équipe de projet, pendant laquelle on m’a expliqué le contexte du
projet, en plus j’ai appris quelques connaissances sur l’environnement de travail et l’archite cture du système en cours de construction. Ensuite, j’ai lu des documentations sur les traitements ETL d’intégration de données déjà réalisés pour que je puisse comprendre la tâche qui m’a été accordée afin de l’aborder correctement. Il s’agit d’un projet dont la réalisation est en interne dans une équipe qui contient des experts Talend,
ce qui était très bénéfique pour moi en termes de support technique. Par ailleurs, le travail se déroulait suivant une méthode Agile.
Travail collaboratif : davantage l’interaction avec les personnes que les processus et les
outils.
Réunions régulières avec le client : davantage la collaboration avec le client.
Satisfaction : le client est mis au centre de la démarche et les personnes impliquées sur le
projet visent la satisfaction réelle du besoin.
Anticipation : développement souple qui anticipe les éventuels changements des besoins.
En plus, j’ai fait des réunions régulière s avec le chef de projet après chaque avancement pour valider
ce qui a été fait, analyser les problèmes rencontrés et discuter la prochaine tâche à réaliser. IV.2 .3 Optimisation des traitements :
Etant donnée la grande masse de données en entrée qui a atteint des centaines de millions de lignes, l’optimisation des traitements était indispensable pour réduire le temps d’exécution. Parmi les actions réalisées dans ce cadre est : -
Utilisation du principe de l’ODS ( Operational Data Store)
qui fait office de structure intermédiaire destinée à stocker les données issues des systèmes de production opérationnelle. Ce sont en quelque sorte des zones de préparation avant l’intégration des
Page 19 sur 34
données dans l’entrepôt de données : données qualifiées, premier niveau de filtrage et d’agrégat.
-
Utilisation du traitement ELT (Extract Load Transform) qui n’utilise pas la JVM au moment de l’exécution mais utilise les capacités de traitement des bases de données qu’il exploite . Autrement dit, les données sont traitées par la base de données et non plus par Talend et donc Java ce qui peut améliorer les performances lors de gros traitement.
IV.2.4 Outils de travail :
Le développement était centralisé dans un serveur de développement qui avait des bonnes capacités et qui servait à la réalisation des tests sur des gros volumes de données. Et en ce qui concerne les outils de travail, l’utilisation de la version entreprise TIS de Talend m’a offert plus de fonctionnalité s qui m’ont permis d’optimiser de plus en plus les traitements tels que, l’utilisation des Joblets et la supervision des job s, chose n’est pas offerte dans la version gratuite TOS. Aussi, l’utilisation de la gestion des versions des jobs est gérée par le gestionnaire de version SVN qui nous a permis d’avoir un historique de versions ainsi qu’un accès simultané sur un même traitement
par plusieurs développeurs. Il faut noter que dans un travail collaboratif, la mise en place d’un gestionnaire d’erreur est indispensable, dans ce cadre, l’outil Mantis Bug Traker a été mis en place dans le pro jet, il nous a
permis d’avoir un historique d’erreurs et de partager les informations sur les bugs rencontrés ainsi que les membres du groupe impactés par le bug.
IV.2.5 Formation effectuée:
Afin de partager les connaissances sur les outils techniques utilisés dans le projet et assurés par l’entreprise, j’ai assisté à une formation sur l’outil de restitution de données SAP Business Objects .
IV.2.6 Problèmes rencontrés :
Parmi les problèmes rencontrés tout le long de ce projet :
Vu que le projet dans lequel je suis intervenu existe depuis plus d’un an, donc il m’a fallu se documenter et analyser les jobs existants pour comprendre la logique et les conventions de développement.
Temps remarquable avant de commencer le développement de jobs
Première manipulation de la version entreprise de Talend TIS
Capacité du poste local limité surtout sur les grandes masses de données. Page 20 sur 34
IV.2.7 Rédaction de la documentation : Afin de rendre les jobs d’intégration de données compréhensibles et faciliter un éventuel suivi de
développement, j’ai réalisé la documentation de toutes les tâches réalisées. Cette documentation effectuée à la fin de chaque action contient une description détaillée des traitements ainsi que la logique suivie pendant le développement et le principe de fonctionnement des jobs. IV.2.8 Conclusion :
Le projet dans la deuxième mission est un projet de type forfait, c'est-à-dire qu ’il possède un document de spécification détaillé et un cahier des charges qui fixe les limites du projet. En plus, les données sont de bonne qualité en termes de typage et de taille etc. Par ailleurs, les fichiers source sont bien structurés et bien formatés, ce qui permet d’avoir un gain énorme en termes de temps de développement puisqu’il y aura moins de traitement s dans les jobs pour contrôler la validité des données en entrée. En plus des compétences acquises sur l’ETL Talend, j’ai amélioré mes connaissances en base de
données Oracle en manipulant les transactions différentes à travers des requêtes tout en respectant les contraintes sur les tables de la base de données.
Page 21 sur 34
IV.3 Exemple détaillé : Dans cette partie, je vais présenter un exemple détaillé du traitement (job Talend) fait lors de la première mission. Le job réalisé dans cet exemple prend en entrée un flux CSV contenant 16 colonnes et un nombre de lignes qui peut atteindre 10 millions de lignes dans le cas d’un flux historique . En appliquant le traitement, les données TSD (Taux de Satisfaction de la Demande) seront stockées dans l’entrepôt de données formé d’une table de fait s et des différentes dimensions nécessaire à l’analyse décisionnelle. IV.3.1 Flux en entrée : TS_FRANCE_TC_SUMMER_20120601_01.csv
IV.3.2 Les données source :
Les données source se présentent sous différents types tels que : Chaîne, Date, Numérique (Entier, Réel, Double), Pourcentage. Le nom de flux dans cette phase contient plusieurs champs séparés par « _ » : - Le type de flux (CONTEXT, INIT, CO, TS, MO, SE) - Le nom du pays - Le code de la ligne produit - Le code de la saison - Une date sous le format yyyyMMdd. - Identifiant unique du nom de fichier D’où le nom TS_FRANCE_TC_SUMMER_20120601_01.csv
IV.3.3 Description du job :
Ce job se charge de l’intégration des données TSD et de la création des dimensions de pneus de type TS. Dans le schéma qui suit, un diagramme d’activité qui décrit le processus Talend:
Page 22 sur 34
Vérification de la validité du nom de flux Rejet du fichier invalide valide Vérification de la correspondance entre la date qui figure dans le nom du flux et celle dans le flux Rejet du fichier invalide valide Identification des lignes rejetées et alimentation de la table de rejet
Nbr_lignes_rejetées > 0 Nbr_lignes_rejetées = 0 Rejet du fichier Alimentation de la table temporaire
Gestion des annules et remplaces
Alimentation des tables finales Vérification Suppression/Rejet Alimentation Validation(Commit)
Validation
Figure 5: Diagramme d'activité
Page 23 sur 34
IV.3.4 Gestion des rejets :
Identification des erreurs de chargement et alimentation de la table de rejet t_file_rejected_ts. Dans le tableau qui suit, quelques contrôles de chargement traités dans le job : Colonne
dt_trt
Test
Format date valide
pays_lib
Existe dans la table t_country
MRQ_LIB
Existe dans la table t_brand(Name_in_TSD)
CAT_LIB
Existe dans t_etrma_category(Name_in_TSD)
SAI_LIB
Existe dans t_market_season(Name_in_TSD)
IVIT_C
Numérique et existe dans t_speed_Index (Code)
HB_C
Numérique et existe dans t_generic_dimension (geometric_box_ratio) Numérique et existe dans t_generic_dimension (geometric_box_width) Numérique et existe dans t_generic_dimension (load_index_code) Numérique et existe dans t_generic_dimension (geometric_box_diameter) MM/YYYY
BOUD_C ICH_C RSEAT_C DATE_SOUHAITEE Quantité demandée retenue(SUM_ATF _RET_DEM_QT) Quantité livrée conforme(SUM_AT F_LIV_CFRM_QT) Season + Type IVIT_C + Rseat_C (Season + Type) + (SI + Seat)
Numérique
Validé
Non Validé
Rejet de la ligne Rejet de la ligne Rejet de la ligne Rejet de la ligne Rejet de la ligne Rejet de la ligne Rejet de la ligne Rejet de la ligne Rejet de la ligne Rejet de la ligne Rejet de la ligne Rejet de la ligne
Numérique
Rejet de la ligne
Existe dans Generic_Segment type TS
Rejet de la ligne Création Création
Existe dans Generic_dimension type TS Existe dans t_tsd_element Tableau 1 : Contrôles de chargement
Dans la table de rejet on stocke la ligne rejetée, le numéro de la ligne dans le fichier, un code d’erreur et un message d’erreur qui explique la cause de rejet.
La table de rejet sera utilisée par le système BI comme support de données à l’aide de duquel un rapport détaillé sera généré pour l’utilisateur final sur les éventuelles erreurs provenant de la source. Le bloc qui assure cette phase de contrôle est représenté par la figure 6 qui suit.
Page 24 sur 34
IV.3.5 Utilisation d’une table temporaire (ODS) :
On stocke les données provenant du fichier source dans une table temporaire (tmp_file_ts) sans prendre en compte le typage des données et en réalisant toutes les jointures possibles.
Le passage par cette table diminue énormément le temps d’exécution du job, puisq ue
l’alimentation des tables définitives se fera directement à partir de la table temporaire (sans
refaire les jointures).
Cette table de données temporaires est tronquée à chaque lancement du job.
Le bloc qui assure l’alimentation de la table temporaire est représenté par la figure 7.
Page 25 sur 34
Sauvegarde les lignes rejetées Vérifie les champs nuls, la ta ille des champs Duplicati on du schéma en entrée
Figure 6 : Bloc de la gestion des rejets
Page 26 sur 34
Dossier contenant les flux
Le fichier en entrée
Commit: Validation de la transaction
Figure 7 : Bloc d'alimentation de l'ODS
Page 27 sur 34
Dossier contenant les flux
Le fichier en entrée
Commit: Validation de la transaction
Figure 7 : Bloc d'alimentation de l'ODS
Page 27 sur 34
IV.3.6 Gestion des annule et remplace :
Ce bloc permet de supprimer et remplacer les volumes existant dans la table nommée t_tsd_volume_by_month par les nouvelles valeurs si le fichier en cours de traitement porte le même nom qu’un flux déjà traité.
Le bloc responsable de cette action est représenté par la figure 8.
Figure 8 : Suppression des v olumes existants
IV.3.7 Alimentation des tables finales :
En se basant sur les données qui existent dans la table temporaire, on alimente directement les
IV.3.6 Gestion des annule et remplace :
Ce bloc permet de supprimer et remplacer les volumes existant dans la table nommée t_tsd_volume_by_month par les nouvelles valeurs si le fichier en cours de traitement porte le même nom qu’un flux déjà traité.
Le bloc responsable de cette action est représenté par la figure 8.
Figure 8 : Suppression des v olumes existants
IV.3.7 Alimentation des tables finales :
En se basant sur les données qui existent dans la table temporaire, on alimente directement les tables finales. Le bloc qui permet l’alimentation des tables finales est représenté par la figure 9.
Page 28 sur 34
Figure 9 : Alimentation des tables finales
Page 29 sur 34
IV.3.8 Variables de contexte utilisées :
Nom
error_code_field_null
Fonction
Code de rejet d’une ligne dans le cas d’un
Type
Valeur par défaut
Obligatoire
String
nul
oui
String
nul
oui
String String
nul noDatetimeString Sync=true [Nom de la base] root
oui oui
champ nul. error_code_join
filename_context pcp_AdditionalParams pcp_Database pcp_login pcp_password pcp_port pcp_server DIR_ARCHIVE DIR_CONF
DIR_DATA
Code de rejet d’une ligne dans le cas d’une
jointure échouée. Nom du flux en entrée.
Nom d’utilisateur
Mot de passe Le numéro de port Hôte Dossier contenant les fichiers déjà traités. Dossier contenant les fichiers de configuration. Dossier contenant le
String String String String String String
String
3306 localhost nul
oui oui oui oui oui oui
oui
IV.3.8 Variables de contexte utilisées :
Nom
error_code_field_null
Fonction
Code de rejet d’une ligne dans le cas d’un
Type
Valeur par défaut
Obligatoire
String
nul
oui
String
nul
oui
String String
nul noDatetimeString Sync=true [Nom de la base] root
oui oui
champ nul. error_code_join
filename_context pcp_AdditionalParams pcp_Database pcp_login pcp_password pcp_port pcp_server DIR_ARCHIVE DIR_CONF
DIR_DATA DIR_FILE_IN DIR_FILE_OUT DIR_FILE_REJECTED file_country
file_date year
file_market_season file_product_line
filename_init filename_in
Code de rejet d’une ligne dans le cas d’une
jointure échouée. Nom du flux en entrée.
Nom d’utilisateur
Mot de passe Le numéro de port Hôte Dossier contenant les fichiers déjà traités. Dossier contenant les fichiers de configuration. Dossier contenant le flux de contexte. Dossier contenant les flux en entrée. Dossier contenant les fichiers créés. Dossier contenant les flux rejetés. Le nom de pays récupéré du nom de flux. La date qui figure dans le nom de flux. L’année qui figure dans
le nom du fichier en entrée. La saison qui figure dans le nom du fichier. La ligne produit récupérée du nom de fichier. Le nom du fichier INIT Nom de flux en entrée.
String String String String String String
3306 localhost nul
oui oui oui oui oui oui
String
oui
String
oui
String
oui
String
oui
String
nul
oui
String
nul
oui
String
nul
oui
String
nul
oui
String
nul
oui
String String
nul nul
oui Oui
Tableau 2 : Liste des variables de contexte
Page 30 sur 34
IV.3.9 Utilisation des routines Talend:
Pour remédier à des problèmes spécifiques dans la transformation des données, j’ai eu recours à l’utilisation des routines Talend. Une routine est une classe java ayant que des méthodes statiques, d’où la puissance de l’ETL Talend parce qu’en plus des possibilités énormes de transformation offertes par défaut, on a la possibilité de
créer nos propres traitements (routines), ce qui offre un niveau de flexibilité, de souplesse et de performance.
Page 31 sur 34
VI.
Conclusion :
Durant ce stage de six mois chez BIPP Consulting, mes attentes en termes d’acquisitions de compétences techniques telles que le développement sur l’ETL Talend et la manipulation des SGBD (Oracle 11g, MySql5) ainsi qu’en termes de découverte du monde professionnel en développement des systèmes d’information décisionnels ont été satisfaites. Mon affectation à des projets utilisant un panel riche en outils largement demandés sur le marché de l’informatique décisionnel (Talend, Oracle, Business Objects, etc.) m’a permis d’avoir une expérience
recherchée de nos jours. En plus des compétences techniques acquises et utilisées lors de mes interventions sur les deux projets durant mon stage, la formation sur l’outil Business Objects à laquelle j’ai assisté m’a permis de découvrir un autre environnement important dans le domaine BI. De plus, le contact direct avec le client m’a servi d’améliorer mon relationnel avec le maître d’ouvrage.
Par ailleurs, le travail collectif dans une équipe pluridisciplinaire suivant une bonne méthodologie de travail était une expérience très intéressante qui m’a aidé à élargir mes connaissances en gestion de
projet.
Page 32 sur 34
Références
http://www.bipp-consulting.fr http://fr.wikipedia.org http://fr.talend.com/index.php http://www710.univ-lyon1.fr/~elghazel/BI/ http://www.wtdev.fr http://www.journaldunet.com/solutions/intranet-extranet/business-intelligence/ http://www.lirmm.fr/~libourel/FMIN206/cours11_BDS-OlapSolap.pdf
Liste des acronymes BI: Business Intelligence SI: Système d’information SIAD: Système d’Information d’Aide à la Décision ETL: Extract Transform Load DW: Data Warehouse ODS: Operational Data Store OLAP: Online Analytical Processing ERP: Enterprise Resource Planning SAP: Systems, Applications, and Products for data Processing JVM: Java Virtual Machine TOS: Talend Open Studio TIS: Talend Integration Suite ELT: Extract Load Transform TSD: Taux de Satisfaction de la Demande SGBD : Système de Gestion des Base de Données.
Glossaire [1] BI : « La Business Intelligence (BI), également « intelligence d'affaires » ou « informatique
décisionnelle », englobe les solutions informatiques apportant une aide à la décision avec, en bout de chaîne, rapports et tableaux de bord de suivi à la fois analytiques et prospectifs. Le but est de consolider les informations disponibles au sein des bases de données de l'entreprise. » 7
7
http://www.journaldunet.com/solutions/intranet-extranet/business-intelligence/
Page 33 sur 34
View more...
Comments