Il y a quelques temps déjà, je suis tombé sur un plugin très intéressant pour le serveur Pentaho, à savoir le MetadataSample Plugin.
Ce petit plugin développé par Andy Grohe, démontre comment on peut interagir avec le Web Service utilisé par le WAQR de Pentaho (Web Ad Hoc Query Reporting) afin de proposer d’autres possibilités de présentation pour l’interface utilisateur (GUI).
Pour rappel, le WAQR, c’est le module web disponible dans Pentaho (versions CE & EE) qui permet de construire un rapport à partir de la couche de métadonnées, sans aucune connaissance du SQL par l’utilisateur final. C’est assez pratique (par exemple) pour réaliser des exports Excel en manipulant simplement des vues et des colonnes métier. Je détaillerai tout ceci dans des prochains articles…
Après avoir développé cet été le plugin « BIRT ODA Pentaho Metadata Plugin », je me suis dit qu’il était finalement intéressant de mixer le travail d’Andy et le mien pour permettre à ce bon vieux Kettle de récupérer lui aussi des données depuis des domaines de métadonnées « Pentaho Metadata ».
# Quel intérêt ?
Prenons un exemple simple, sur la base de données SampleData embarquée dans le serveur Pentaho de démo.
Imaginez que vous souhaitiez générer avec Kettle un fichier Excel synthétisant le montant total des ventes par gamme de produit (ProductLine) et par client (CustomerName), tout ça pour la France.
Votre traitement va ressembler à ceci :
L’ordre SQL à cela (3 jointures, un GROUP BY, une clause WHERE) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
SELECT CUSTOMER_W_TER.TERRITORY, CUSTOMER_W_TER.COUNTRY, CUSTOMER_W_TER.CUSTOMERNAME, PRODUCTS.PRODUCTLINE, SUM (ORDERDETAILS.QUANTITYORDERED * ORDERDETAILS.PRICEEACH) as TOTAL FROM PRODUCTS INNER JOIN ORDERDETAILS ON PRODUCTS.PRODUCTCODE = ORDERDETAILS.PRODUCTCODE INNER JOIN ORDERS ON ORDERDETAILS.ORDERNUMBER = ORDERS.ORDERNUMBER INNER JOIN CUSTOMER_W_TER ON ORDERS.CUSTOMERNUMBER = CUSTOMER_W_TER.CUSTOMERNUMBER WHERE CUSTOMER_W_TER.COUNTRY = 'France' GROUP BY CUSTOMER_W_TER.TERRITORY, CUSTOMER_W_TER.COUNTRY, PRODUCTS.PRODUCTLINE, CUSTOMER_W_TER.CUSTOMERNAME |
Avec le plugin d’extraction depuis une source Pentaho Metadata, cela va être un peu plus simple, puisque tout se gère dans une interface spécifique :
Dans ce cas, il suffira juste de sélectionner les 5 colonnes métiers utiles, et selon le type d’agrégateur pour le champ « Total » défini dans la couche de métadonnées, la consolidation sera automatique…
Bien sûr les colonnes métiers peuvent être traduites en français, italien, espagnol, etc… Pentaho Metadata gère le i18n.
Dans la vidéo qui suit, vous allez vous rendre compte que selon l’utilisateur avec qui on se connecte, l’accès aux modèles métiers est sécurisé: seul « Joe » accède aux 3 modèles (mais pas Suzy ou Pat). Cela serait valable également pour les colonnes métiers (sauf que dans le metadata de démo ce n’est pas configuré). On pourrait également dicter des règles filtrage au niveau des lignes retournées et non plus des colonnes (« row-level filtering ») : par exemple Joe ne pourrait voir que les données pour la France, Suzy pour les USA et Pat pour l’Italie…
# Démonstration
Rien de telle qu’une vidéo pour mieux appréhender le fonctionnement du plugin :
# Installation
Le plugin est disponible en version beta (v0.8) sur labs.atolcd.com, où vous trouverez d’ailleurs d’autres contributions plutôt intéressantes dans le domaine de l’OSBI, mais aussi de l’ECM, des SIG et des CMS :
- Un plugin Kettle pour écrire directement dans des DataList Alfresco via le standard CMIS 🙂
- La version 1.0 de Geo Analysis Tool (portée sous GWT). J’en reparlerai ici bientôt également…
Pour que le plugin fonctionne, vous devez utiliser obligatoirement Kettle 4.0 ou 4.1 et un serveur Pentaho 3.6 ou 3.7.
Guide d’installation :
- Décompresser le fichier « PentahoMetadata_Kettle_Plugin-0.8.zip » dans le répertoire d’installation de Kettle pluginssteps. Un répertoire « MetadataPlugin » est créé. Celui-ci contient la librairie java, l’icône de la brique au format png ainsi qu’un fichier « mqlQuery.xaction »
- Copier le fichier « mqlQuery.xaction » dans le répertoire pentaho-solutionssystem du serveur Pentaho
- Démarrer votre serveur Pentaho , lancer Kettle puis tester cette nouvelle étape, vous la trouverez dans le dossier « Extraction »
# Pourquoi une version beta ?
Ce plugin a été finalement développé en très peu de temps, surtout pour le « fun ». 🙂
Bien sûr il y a des améliorations à apporter :
- Pouvoir ajouter simplement une condition de filtrage dans l’étape via une interface « user friendly » et non une contrainte MQL (dont il faut connaître la syntaxe XML)
- Rajouter des contrôles d’erreurs (ajout d’exceptions Java) notamment lorsqu’il y a des soucis d’accès au web service et/ou au serveur Pentaho (ça manque)
- Et surtout, adapter le plugin aux évolutions de la plate-forme afin d’attaquer d’ici peu l’API prévue dans Pentaho 4. James Dixon a déjà fourni quelques éléments sur ce sujet fin 2010 dans son « JimmyLabs », de la doc techniquement fortement intéressante !
Si jamais vous trouvez des bugs, vous pouvez les notifier dans le gestionnaire de bugs afin qu’une version stable 1.0 voie le jour 😉
Ah j’oubliais, lors du développement du plugin Kettle pour Alfresco, nous avons commencé à rédiger un document assez détaillé (merci Vincent) pour vous aider à coder vous-même vos propres plugins Kettle. A suivre donc, celui-ci sera bientôt disponible sur notre blog technique !
Laisser un commentaire