Pentaho : Nouvelle version


Il y a tout juste un mois, Pentaho a sorti une nouvelle version, plus légère, fonctionnant de son application sans le serveur d'application JBoss et sans déploiement dans JBossPortal.

Cette nouvelle version (la 1.7) n'apporte pas de nouvelles fonctionnalités, en dehors d'une nouvelle page d'accueil (home) de la démo mais apporte des simplifications techniques, avec notamment l'utilisation de Tomcat au lieu de JBoss.

S'il était possible auparavant de se passer de JBoss, il fallait tout de même retravailler les sources et la configuration générale. C'est maintenant en natif, avec à la clé des facilités de téléchargement et de déploiement.

Kettle

Kettle : une autre solution ETL

Kettle est un outil ETL (entièrement graphique) supportant de nombreuses bases de données (en entrée et en sortie) ainsi que des processus complexes de transformations de ces données.
Si vous n’avez pas le temps de faire mu muse avec le produit, voici quelques commentaires sur le produit Kettle, rappelons-le open source gratuit ! Kettle utilise les drivers JDBC pour les connexions aux différentes bases de données. Il existe des possibilités de mettre les données en cache, et l'on peut faire tourner plusieurs transformations en parallèle (voir paragraphe sur la lenteur). Kettle fonctionne sur des bases de données de production possédant des millions d'enregistrements.

L’interface, la convivialité : une qualité


En premier, ce qui vient aux yeux, c’est l’interface unique (développée en Java). Elle parait au premier abord plus fonctionnelle, donc plus agréable à l’œil d’un débutant que son concurrent. La gestion des transformations et des jobs en est facilitée. Cependant, certain trouveront que l’interface est moins séduisante que Talend à cause de son rapprochement avec la DB.

Certains reprochent également la lenteur de Kettle dans certaines opérations. Je tiens à rappeler que pour les tris par exemple il faut paramétrer parfaitement la transformation (nombre de rows pour une passe de tri, usage de la ram / fichiers temporaires…).
Car, en passant par un nombre élevé de fichiers temporaires, on augmente considérablement cette lenteur constatée. Augmenter le nombre de rows en mémoire augmente considérablement le traitement. Il y a aussi une option de compression des fichiers temporaires, mais qui rajoute du temps de traitement tout en diminuant l’espace disque nécessaire…(faut savoir ce que l’on souhaite !).

Tout ça pour dire que la lenteur de Kettle n’est pas une fin en soi.

Deux modes différents

Kettle peut s’utiliser au travers de deux modes distincts, en local ou avec référentiel :

En local : les transformations et les jobs sont stockés et gérés en local sur filesystem.


Avec référentiel : tout le travail du développeur est stocké dans le référentiel PDI/Kettle qui repose sur un schéma dédié créé sur la DB de votre choix (sur système cible par exemple). Il s’agit là d’une fonctionnalité idéale : plus de fichiers à gérer, tout est centralisé. En cas de changement de paramétrage d’une de vos DB, il vous suffira de changer une seule fois la connexion correspondante dans le référentiel ; le changement sera alors répercuté sur toutes les transformations / jobs qui utilisent cette connexion.


Dans tous les outils fournis, Kettle est livré avec des exemples de scripts pour le lancement des jobs / transformations en mode batch. Très utile dans mon contexte actuel (Solaris), on a la possibilité de mettre au point un pool de scripts qui assurent le déclenchement des jobs (certains en parallèle !), leur contrôle ainsi que la reprise sur anomalie.


Une anomalie se remonte très vite avec un simple parseur, voire un Ctrl-F « ano » lors des mises au point. A noter que le lancement d’un job/transformation en interactif (via l’interface) est bien entendu possible.

Globalement, les performances sont globalement au rendez-vous. Bien entendu, plus votre DB sera performante et structurée, meilleur sera le comportement de Kettle.

Défaut : un module de gestion manquant


Il manque cependant un module à Kettle, qui se fait cruellement sentir dès lors que l’on travaille avec de multiples environnements : un gestionnaire de transformations / jobs. Actuellement, pour migrer une transformation ou un job d’un environnement à un autre, il faut passer par une sauvegarde/export local, puis reconnexion au nouveau référentiel pour publication. Un module de gestion des transformations et des jobs serait plus rapide pour gérer au mieux la phase de montée en environnement à l’image d’un « CVS light » ou encore d’un « SourceSafe ».

Talend OpenStudio : une solution ETL

Talend OpenStudio : l’outil ETL Open source par excellence.


Comme mon blog est axé sur les outils Open Source, je parlerai dans ce post de l'ETL Talend OpenStudio (en plus made in d’un éditeur français…). La première version date de octobre 2006. Talend OpenStudio, c’est quoi ? C’est un outil graphique qui permet de tout faire en mode Drag and Drop. Elle permet d'appeler des Web Services, d'extraire des données de fichiers (en local ou via le ftp) et de bases de données pour réaliser des traitements complexes (sortie sous Java / Perl). Une interface intuitive permet également une écriture aisée des scripts et la réalisation de documents relativement facilement.

Talend a sorti la version 2.2.0 de Talend Open Studio le 8 octobre 2007.
Au rythme d'une release tous les 3 mois, la 2.2.0 apporte de nombreux enrichissements par rapport à la 2.1.x, côté studio de conception et côté génération de script Perl ou Java. Voici une liste des principales évolutions.

Les nouvelles fonctionnalités de Talend Open Studio 2.2.0 sont nombreuses, en voici quelques unes :

  • amélioration de la gestion de contexte (GUI, nouveaux composant tContextDump),
  • exportation des jobs comme des services Web Java,
  • interface de construction d’expression graphique (Expression Builder)

Nouveautés du studio : basé sur Eclipse 3.3, constructeur graphique d'expressions, glisser/déposer des metadonnées pour créer des composants pré configurés ainsi qu'une refonte de la gestion des contextes simplifiant leur utilisation. Vous bénéficierez donc de toutes les améliorations inhérentes à ce nouveau framework (support de Windows Vista…).

En Java :

  • Support de nouvelles bases de données : connecteur AS400 / connecteur Generic JDBC...
  • Le composant de Slowly Changing Dimension supporte désormais les bases MySQL, Oracle, Ingres, MSSQL, DB2 et Sybase. Il intègre désormais les types 1, 2 et 3 et supporte les surrogate key…
  • Support des procédures stockées pour les bases Oracle, MS SQL, Ingres, MySQL et DB2
  • Partage de connexion pour Oracle et PostgreSQL...
  • Support LDIF/LDAP
  • Les "wait for file" et "wait for SQL data" (déclenchement du job en fonction de l’apparition d’un fichier, de l’arrivée de lignes dans une table…)
  • Fusion et séparation de flux (tUnite et tReplicate)
  • Support de SCP

En Perl :

  • Composant permettant les substitutions multiples (simple et advanced) : tReplace
  • Partage de connexion pour les bases Oracle et PostgreSQL...
  • Lookup multiples
  • Les "wait for file" et "wait for SQL data" (déclenchement du job en fonction de l’apparition d’un fichier, de l’arrivée de lignes dans une table…)
  • Flow data metering
  • File touch
  • Fusion et séparation de flux (tUnite et tReplicate)
  • Support SCP
Enfin, si vous souhaitez trouver débuter (et même vous perfectionner, tout dépend de votre état d'avancement), je ne saurais vous conseiller le tutorial (en français) en format pdf. Quelques 130 pages auront raison de votre patience pour devenir autonome sur Talend ! Une simple indication de quelques informations personnelles vous seront demandées (email non vérifié).
Bon courage ! Et très bientôt un post sur son concurrent Kettle...

L'outil, la phase, le processus ETL

Première étape d’une solution complète de BI, la phase d’extraction, transformation et chargement, plus communément appelé ETL est l’outil informatique par excellence. Destiné à extraire des données de diverses sources (bases de données de production, fichiers, Internet, etc.), à les transformer et à les charger dans un entrepôt de données, l’outil ETL intègre des données dans différents systèmes (applications) de l’entreprise nécessaires à un futur traitement. Pour cela, l’outil stocke toutes ses données qui proviennent donc de différents systèmes dans une seule grande base de données (datawarehouse). On parle souvent d’outil et processus « d’alimentation » car l’outil va chercher des données un peu partout pour les centraliser et ainsi alimenter le datawarehouse.

Je vais maintenant décrire les trois différentes étapes du processus ETL et différencier l’outil du processus ETL.

L’intégration ou alimentation de données

Les outils ETL gèrent toutes les étapes de la collecte des données au sein des systèmes d'information hétérogènes : SGBD, ERP, applications spécifiques, fichiers plats, bases hiérarchiques... depuis le nettoyage des données collectées, la consolidation et la mise en concordance des données éparses jusqu’à leur distribution (notion d’alimentation) auprès des applications cibles ou des systèmes décisionnels centralisés (analyse, tableau de bord...).

Le processus ETL est une opération de migration de données (de différents systèmes à un datawarehouse) qui consiste aussi à la rendre facilement lisible et disponible. Ce processus représente une part majeure des traitements et nécessite une attention régulière tout au long du cycle de vie du système, dans la mesure où il est garant de la qualité des données finale.

C’est le processus ETL qui se décompose en trois phases : l'extraction, la préparation/transformation et le chargement.

L’extraction des données

Comme expliqué ci-dessus, la première phase consiste à acquérir des données éparses. L'outil ETL a la capacité de se connecter aux différentes applications, bases de données ou fichiers à différents endroits dans l’entreprise.

Pour ce faire, outre un outil de spécification d’extraction de données, plusieurs technologies sont utilisables :

  • Les passerelles fournies par les éditeurs de logiciels de gestion de bases de données.

  • Les utilitaires de réplication, utilisables si les systèmes de production et décisionnels, sources et cibles, sont homogènes.

L’outil doit être à même de lire sélectivement les données sources (c’est l’intérêt de l’étape), et donc de filtrer les données en lecture afin de n’extraire que l’information pertinente.

La transformation et le contrôle des données

Les ETL sont des ateliers spécialisés dans la migration de données. La transformation des données est leur fonctionnalité principale. Ils doivent disposer d’une fonction permettant de vérifier qu’une donnée est cohérente par rapport aux données déjà existantes dans la base centrale. Ils doivent aussi fournir des outils pour convertir des données différentes (par exemple un langage ou une interface graphique de description de transformation).

Evidemment, ils doivent être conçus pour manipuler de gros volumes de données.

Le chargement et le transfert des données

Le chargement prend en compte la gestion du format final voulu des données.

Pour la mise en oeuvre du transfert de données, on distingue deux approches possibles :

  • Le transfert de fichiers : l’ETL transporte les données du système source vers le système cible via un moteur.
  • Le transfert de base à base. Dans ce cas, les outils travaillent en mode connecté, d’une source de données à une cible. Les données sont extraites ensemble à la source, puis transférées à la cible en y appliquant éventuellement des transformations à la volée. Un seul processus, plus rapide, a ainsi l’avantage de pouvoir effectuer, sans rupture, les transferts et toutes les autres opérations d’alimentation.

Liste des outils ETL

Outil très prisé par les DG, on peut en trouver au minimum une vingtaine sur le marché actuel. En voici une vingtaine justement par ordre alphabétique :

  • Ab Initio
  • Ascential DataStage (qui a acheté Mercator Inside Integrator)
  • BusinessObjects Data Integrator
  • Cognos DecisionStream ( Data Manager)
  • Computer Associates Advantage Data Transformation
  • CrossAccess eXadas
  • Data Junction Integration Studio (acheté par Pervasive)
  • DataHabitat ZeroCode ETL
  • DataMirror Transformation Server
  • Embarcadero DT/Studio
  • ETI (Evolutionary Technologies International)
  • Hummingbird ETL
  • IBM DB2 Data Warehouse Manager
  • Informatica (PowerCenter et SuperGlue)
  • Information Builder iWay
  • Microsoft SQL Server DTS
  • Oracle Warehouse Builder
  • Sagent Data Flow Server (acheté par Group 1)
  • SAS Enterprise ETL Server
  • Sunopsis

Tutorial Design Studio - Pentaho

Créer ses requêtes avec Pentaho Design Studio

Pentaho Design Studio est un Eclipse modifié pour créer des fichiers .xactions. Ces derniers contiennent les paramètres d'une source de données et des instructions (génération de rapport, envoie de mail, etc.), sous un format XML, qui sont destinés au moteur de Pentaho pour être exécuter. Un minimum de connaissances en SQL est indispensable pour écrire des requêtes. Toutefois, le XML et le JAVA ne sont pas requis obligatoirement.

Installation et configuration de Pentaho Design Studio

Il faut d’abord configurer le Design Studio grâce au fichier preferences.ini (à l'aide d'un simple éditeur de texte). Ce fichier est dans le répertoire \pentaho design studio\plugins\org.pentaho.designstudio.editors.actionsequence.

Modifiez la ligne ci-dessous pour qu'elle corresponde à votre installation de Pentaho:

actionsequence.server.url=http://localhost:8080/pentaho

Avec Internet Explorer, il faudra toutefois taper l’URL suivante : http://127.0.0.1:8080/pentaho

Une fois cette préférence donnée, quittez et retournez dans Démarrer, Tous les Programmes, Pentaho, Pentaho Open BI Suite puis double-cliquez sur PentahoDesignStudio.exe. N’oubliez pas de lancer le serveur (fichier start-pentaho.bat) !

Introduction à Pentaho Design Studio

Initiation : découverte des requêtes SQL dans Design Studio

Une fois Design Studio lance, faîtes Fichier / New Project

ProjectName = ce que vous voulez (moi je prend TDN°1 par défaut)

Décochez la croix par défaut et allez sélectionner le dossier suivant (samples).

Puis appuyez sur Finish.

Le but de ce premier exercice dans cette partie est d’afficher l’évolution des différences de prix entre le prix d’achat et le prix de vente (conseillé). Cet affichage se fera selon différentes possibilités graphiques qui seront données à l’utilisateur via une liste déroulante.

La première tâche consiste à paramétrer et créer des fichiers. La mission consiste seulement à paramétrer le fichier .xaction responsable de ce qui est affiché à l’écran de l’utilisateur.

Ces derniers contiennent les paramètres d'une source de données et des instructions (génération de rapport, envoie de mail, etc.), sous un format XML, qui sont destinés au moteur de Pentaho pour être exécutés.

Déplacez-vous jusqu’au dossier charts et cliquez sur le petit plus pour « développer » l’explorateur. Ici sont concentrés tous les fichiers nécessaires à l’affichage d’une page avec un navigateur. Le fichier ChartComponent_ChartTypes.xaction contient la requête et les propriétés d’affichage que nous allons créer ensemble.

Une fois que vous avez ouvert le fichier ChartComponent_ChartTypes.xaction, sur la droite de l’écran apparaît une nouvelle fenêtre avec 4 onglets situés en bas.

L’onglet général réfère aux propriétés du fichier.

L’onglet suivant (Define process) permet la création de requêtes et la notification des inputs / outputs.

Le troisième onglet (XML Source) contient du code XML qui est généré automatiquement selon les deux premiers onglets.

Enfin, le dernier onglet vous servira à tester vos actions.

Commençons par paramétrer l’adresse du serveur, ce sera le seul élément à paramétrer mais il faudra le refaire souvent..

Allez dans le dernier onglet (Test)

Dans Pentaho Server URL, notez l’adresse suivante : http://127.0.0.1:8080/pentaho puis appuyer sur le bouton Test Server. Cette adresse URL est seulement valide pour Internet Explorer. Si vous utilisez Mozilla, l’adresse devient : http://localhost:8080/pentaho.

Après quelques instants de patience, la page d’ouverture de Pentaho s’affiche, sélectionnez Joe[Admin] pour vous logger. Votre serveur est désormais prêt. Il est en attente d’un ordre.

C’est ce que nous allons faire en lui donnant une requête.

Nous souhaitons, je vous le rappelle, afficher l’évolution des différences entre les prix de vente et prix d’achat dans une période donnée (entre 1970 et 1980).

Il faut pour cela revenir au deuxième onglet (Define Process). Sur la gauche de cette page se trouvent trois encarts. Nous nous occuperons seulement de celui du milieu, les autres étant déjà configurés. En effet, l’encart Process Actions contient toutes les actions que Pentaho doit faire. Avec un simple clic gauche sur le nom d’une action, à droite s’affiche les éléments qui la composent.

Votre mission consiste à trouver la requête qui permettra l’affichage de l’évolution des différences entre les prix de vente (msrp) et prix d’achat (buyprice) (disponibles dans la table PRODUCTS) dans une période donnée (entre 1960 et 1970).

La requête est donc la suivante :

select buyprice, msrp from PRODUCTS where productname like '197%' order by productname

Recopiez cette requête dans l’encart Query (ovale noire):


Testez votre action en allant sur le quatrième onglet, en retapant si nécessaire l’adresse URL du serveur puis tester le serveur. Une fois connecté avec le login Joe, appuyez sur le bouton Generate Url puis Run.


Grâce à la liste déroulante, vous pouvez choisir sous quel format graphique vous souhaitez afficher votre résultat (sélection puis Run Report). Si nous prenons en ligne (line) par exemple, pouvez-vous nous donner sur la feuille des réponses le prix de vente (msrp) le plus élevé, le prix d’achat (buyprice) le plus élevé et si ils correspondent au même produit.

Faites clic droit, Précédent puis essayez d’autres types graphiques. Première mission réussie !

Exemple simple de création d'un fichier .xaction

Dans Package Explorer, faites un clic-droit sur le projet pentaho_solutions, New, Folder et nommez ce nouveau dossier.

Dans Package Explorer, faites un clic-droit sur le nouveau dossier, New et Other... .

Dans le dossier Pentaho, choisissez New Action Sequence Wizard.

Nommez votre fichier .xaction et cliquez sur Finish.

Double-cliquez sur votre xaction. Ce dernier s'ouvre dans la fenêtre droite.designstudio7.JPG

Cliquez sur l'onglet Define Process. La colonne de gauche montre les différentes parties de votre xaction. Dans la partie Process Actions, faites un clic-droit, Add, Get Data From et Relational.

Sur la partie droite s'affiche les caractéristiques de cette action. Cliquez sur JNDI et inscrivez le nom de votre JNDI configuré précédemment (par défaut SampleData).


En dessous dans la partie Query, inscrivez "SELECT SYSDATE FROM DUAL".

Dans Process Actions, faites glisser query_result vers ouputs qui se trouve en bas dans la section Process Outputs.


Sauvegardez le fichier avec Ctrl-S.

Cliquez sur l'onglet Test et sur le bouton Run.

Votre application est valide. Ce dernier exercice vous a paru simple ? Cela tombe bien car rassurez-vous, nous n’avons utilisé que 1% des possibilités offertes par Pentaho !

MarvelIT :> comparaison avec Pentaho

Présentation

Peut être le moins connu de mon étude comparative, MARVELit DASH est un projet de portail décisionnel, développé par la société MARVELit et distribué sous licence open source. Il utilise le portail Apache Jetspeed et est dédié à la création de tableaux de bord.

Communauté

En dehors de la société MARVELit, il n'y a pas de communauté visible autour de ce produit.


Composants utilisés

  • Pour le états : JasperReports
  • Pour les graphiques : JFreeChart
  • Pour le planificateur : Quartz (comme ses confrères…)
  • Pour le portail : Apache Jetspeed 1.6 Fusion, compatible avec les portlets utilisant la norme JSR168.

Fonctionnalités

MARVELit se présente sous forme d’un portail dans lequel l'administrateur peut disposer des portlets affichant des graphiques ou des états.

Le paramétrage (définition de la source de données, de la requête SQL, ...) se fait directement depuis l'interface du portail, en modifiant les paramètres de chaque portlet.

Le positionnement des éléments dans la page et la gestion des droits de chaque utilisateur repose sur les fonctionnalités du portail Jetspeed.

MARVELit propose 4 portlets :

  • Portlet chart : affichage d'un graphique JFreeChart représentant les données d'une requête SQL.
  • Portlet open report : ouverture d'un état JasperReports au format PDF ou HTML. Il est également possible de planifier la génération et l'envoi d'un état à une ou plusieurs adresses mail données.
  • Admin : portlet d'administration de MARVELit, utilisé pour la définition des sources de données et la déclaration des états disponibles.
  • L'utilisateur peut sélectionner la plage de données à afficher dans les états et les graphiques via des menus déroulants.

Conclusion

Les fonctionnalités de MARVELit DASH sont très limitées comparées à des plateformes telles que Pentaho ou SpagoBI. Il conviendra cependant pour rapidement mettre en place un portail aux fonctionnalités de tableau de bord et de reporting élémentaires ou basiques. Mais attention à ne pas vouloir se focaliser sur l’interface personnalisée au risque, comme Jasper, d’avoir une interface non finie. Alors ,si l'on souhaite évoluer par la suite vers de l'analyse multidimensionnelle ou proposer des états complexes, on se tournera de préférence vers Pentaho ou SpagoBI.

Jasper :> comparaison avec Pentaho

Présentation

JasperIntelligence est la plateforme décisionnelle de JasperSoft, qui développe également JasperReports. Elle permet la visualisation d’états JasperReports et dispose de fonctionnalités d’analyse avec Mondrian et JPivot. Chaque état peut être généré et envoyé périodiquement à un utilisateur comme c’est le cas pour Pentaho.

JasperSoft repose sur une architecture ouverte et sur un support multi-langage, notamment Perl, PHP, Python, et Java (sur lequel il repose à 100%), ainsi que sur la possibilité de connexion via les services web, notamment via SOAP. Il est possible d'intégrer les notions de groupes d'utilisateurs multi-niveau et d'authentification à la génération de rapports (au format PDF, Excel, Word et HTML) ; encore une fois un plus par rapport à Pentaho au niveau Open source. Cependant, Spago propose également cette sécurité.

L’interface n’utilise pas de portail contrairement aux autres outils BI. On dispose ici d’une application web développée spécifiquement pour l’outil.

Il est possible de publier et modifier des états très facilement, directement depuis l’application iReport.

Il est peu probable que cette plateforme supporte d’autres générateurs d’états que JasperReport. Il faut donc se contenter de celle offerte par Jasper, une plateforme un peu limitée techniquement même si de nombreuses fonctionnalités son prévues pour les versions futures. Jasper prend ici du retard par rapport à ses concurrents en voulant personnaliser sa plateforme. Attendons les versions futures pour évaluer correctement l’interface.

Communauté

La principale communauté pour l’outil BI s’appelle Jasper Forge. Une communauté professionnelle est également bien présente car comme Pentaho, il existe une version gratuite Open source et une version payante commerciale.

Fonctionnalités et différence Open source / version commerciale


L'une des principales fonctionnalités de JasperSoft est la possibilité d'éditer sous des formats très variées comme PDF, HTML, RTF, XML. L'édition OpenSource comprend des fonctionnalités comme:

  • Metadata framework
  • Gestion des Dépôts des rapports
  • Sécurité et contrôle des rapports assez interactif
  • Intégration Publiques avec les Interfaces d'intégration
  • Horodatage des rapports
  • Définitions des rapports 'portable'.



L'édition Professionnelle comprends des fonctionnalités comme :

  • Ad-hoc: Requête et rappport
  • Distribution des rapports via email (comme Pentaho)
  • Génération planning et graphique spécifiques
  • Intégration du Portail
  • Préférences utilisateurs

Composants utilisés

  • Pour les états : JasperReports
  • Pour l’analyse : Mondrian, JPivot
  • Pour le planificateur : Quartz

Tous ces composants se retrouvent dans l’offre Open source de Pentaho.

Conclusion

JasperIntelligence est une plateforme aux fonctionnalités intéressantes mais limitées. Malgré l’utilisation de composants open source déjà rodés, la plateforme reste très jeune : la première version disponible date d’avril 2006. Il est cependant très intéressant de surveiller les évolutions qui vont y être apportées car elle pourrait être plus intéressant que les offres Pentaho et Spago en ce qui concerne l’interface qui je vous le rappelle, est développée spécifiquement pour l’outil BI par Jasper.