Les tableaux de bord dans Pentaho avec les C*tools

Sylvain

Ce tutoriel, destiné aux débutants, a pour objectif de vous présenter la création des tableaux de bord sur Pentaho avec les C*tools.

Cet article a été initialement publié sur le blog d'Atol Conseils & Développements.

Commentez

- Titre : Les tableaux de bord dans Pentaho avec les C*tools

- Auteur : Sylvain

- Parution : 17 avril 2012

- Mise à jour : 19 avril 2012

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2012 . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- 1. Introduction

- 2. Installation des C*tools

- 3. Exemple de mise en place d'un tableau de bord

- 3-A. Principes de base de Pentaho CDE

- 3-B. Création du Layout

- 3-C. Création des requêtes et affectation aux différents composants

- 4. Mise en place des Listeners (gestion des événements)

- 4-A. Finalisation du tableau de bord

- 5. Autres liens (très) utiles…

- 6. Un autre exemple… et les sources !

- 7. Remerciements

1 - Introduction

Dans une suite décisionnelle, le tableau de bord (ou « dashboard ») est un élément clef pour fournir des informations synthétiques facilement accessibles.

Le pilotage stratégique, le pilotage opérationnel et les indicateurs de performances (KPI) sont autant de cas d'utilisations des tableaux de bord. La plupart du temps, un dashboard présente un maximum d'informations dans un minimum de place, en faisant appel à une grande interactivité et à de multiples composants graphiques.

Mettre en place des tableaux de bord dans la version libre (Community) de Pentaho n'a pas été toujours une chose très aisée (ce n'est pas le cas de la version Enterprise qui propose un module WYSIWYG full Web à destination des utilisateurs métier).

Dans les premières versions de la plate-forme, les dashboards devaient être codés directement en JSP (JavaServer Page), ce qui nécessitait une connaissance très avancée des classes Java internes, des libraires graphiques (JFreeChart) et du fonctionnement des séquences d'actions (XActions).

Très difficile donc (voir impossible) de mettre en place des dashboards sans avoir un profil de développeur Java !!

C'est dans ce contexte qu'est né en 2009 le projet communautaire Pentaho CDF(Community Dashboard Framework), à l'initiative de Pedro Alves (de WebDetails).

Son objectif était simple : fournir une API complète permettant de s'affranchir de la complexité interne de Pentaho grâce au paradigme MVC (Modèle-Vue-Contrôleur).

Au fur et mesure, d'autres projets se sont greffés à Pentaho CDF, pour constituer ce qu'on appelle désormais les « C*tools » :

- CDA(Community Data Access), pour accéder de manière simple et flexible à de multiples sources de données (en SQL, MDX, XML, PDI, Metadata, scripting…). CDA dispose notamment d'un mécanisme de mise en cache et permet d'effectuer des jointures entre des sources hétérogènes par simple configuration XML ;

- CCC (Community Charting Components), une très bonne librairie de visualisation graphique s'appuyant sur Protovis, un projet open source de data-visualization (JavaScript+SVG) ;

- CST (Community Startup Tabs), un plugin qui permet de paramétrer les onglets à afficher au lancement de la « Pentaho User Console », en fonction des droits de l'utilisateur connecté ;

- CDE (Community Dashboard Editor), pour la création et la publication de tableaux de bord directement depuis l'interface web de Pentaho.

Les C*tools permettent de délivrer des tableaux de bord d'une qualité professionnelle, en minimisant la complexité liée à de l'écriture de code. Jetez plutôt un œil sur cette présentation afin d'en prendre pleinement la mesure :

Animation en format "flash" non supportée.
Contenu uniquement consultable en ligne à cette adresse :
http://static.issuu.com/webembed/viewers/style1/v2/IssuuReader.swf?mode=mini&documentId=111103213425-ab7bf9ed7d7a437aa70ddf4b135d4807

2 - Installation des C*tools

Chacun des C*tools est disponible sous forme de plugin serveur Pentaho, l'installation consiste au dépôt d'un simple dossier dans le répertoire /pentaho-solutions/system.

(Note : les C*tools fonctionnent à partir de la version 3.6 de Pentaho)

En raison des dépendances entre les différents plugins, il est vivement conseillé d'utiliser le script d'installation ctools-installer.sh (Linux). Ce script fonctionne également sous Windows à condition d'installer Cygwin (émulateur Linux pour Windows). Retrouvez tous les détails pour effectuer cette installation dans ce post de Pedro Alves.

3 - Exemple de mise en place d'un tableau de bord

3-A - Principes de base de Pentaho CDE

Pour réaliser un tableau de bord avec Pentaho CDE, il faut avant toute chose avoir une idée assez précise du résultat final !

Cela revient à définir une petite maquette dans laquelle on va spécifier :

- la structure du dashboard (le « Layout ») ;

- les différents composants (« Components ») du dashboard : graphiques, tableaux de données, objets web (listes déroulantes, cases à cocher, calendrier…) ;

- les interactions entre les composants, au travers de paramètres (« Parameters ») ;

- les sources de données nécessaires à l'alimentation des composants (« Data Sources »).

Prenons un exemple simple de tableau de bord à réaliser :

Ce tableau de bord s'appuie sur les données de la base de démonstration de Pentaho (SampleData). Il contient un en-tête avec le titre, une zone pour le choix des paramètres (sélection de l'année) ainsi que deux objets graphiques représentant respectivement le montant total des ventes par zone (camembert) et le détail des ventes par gamme de produit sur deux années consécutives (histogramme).

3-B - Création du Layout

Dans CDE, l'onglet Layout permet de positionner et d'agencer les différents composants de la page web.

Pentaho CDE repose sur le framework CSS BluePrint qui permet une mise en page simplifiée. Le point le plus important à noter est que ce framework repose sur une grille de vingt-quatre colonnes, d'où l'obligation de faire en sorte que la somme des attributs « span » de toutes les colonnes d'une même ligne soit égale à vingt-quatre.

Notre tableau de bord présente la structure suivante :

La mise en place est illustrée par la vidéo ci-dessous. Notez qu'on peut personnaliser de façon très avancée la mise en forme grâce à l'utilisation de feuilles de styles CSS comme celle ajoutée dans la vidéo (c'est d'ailleurs sans doute ce point qui nécessite le plus de connaissances techniques) :

Animation en format "youtube" non supportée.
Contenu uniquement consultable en ligne à cette adresse :
https://www.youtube.com/v/sxicLR0y8Vg

3-C - Création des requêtes et affectation aux différents composants

Trois requêtes SQL sont à créer pour le tableau de bord, chacune de ces requêtes étant associée à un composant.

La requête « select_year_query » permet d'alimenter les années affichées de la liste déroulante :

SELECT DISTINCT YEAR_ID FROM ORDERFACT

La requête « piechart_query » permet de créer le diagramme en secteur (« Pie Chart ») :

SELECT
CUSTOMER_W_TER.TERRITORY,
SUM(ORDERFACT.TOTALPRICE)
FROM
CUSTOMER_W_TER INNER JOIN ORDERFACT ON CUSTOMER_W_TER.CUSTOMERNUMBER = ORDERFACT.CUSTOMERNUMBER
WHERE
ORDERFACT.YEAR_ID = 2004
GROUP BY
CUSTOMER_W_TER.TERRITORY

La requête « barchart_query » permet d'alimenter l'histogramme (« Bar Chart ») :

SELECT
PRODUCTS.PRODUCTLINE,
ORDERFACT.YEAR_ID,
SUM(ORDERFACT.TOTALPRICE) AS TOTAL
FROM
PRODUCTS INNER JOIN ORDERFACT ON PRODUCTS.PRODUCTCODE = ORDERFACT.PRODUCTCODE
INNER JOIN CUSTOMER_W_TER ON ORDERFACT.CUSTOMERNUMBER = CUSTOMER_W_TER.CUSTOMERNUMBER
WHERE
ORDERFACT.YEAR_ID IN (2003,2004)
AND CUSTOMER_W_TER.TERRITORY = 'Japan'
GROUP BY
PRODUCTS.PRODUCTLINE,
ORDERFACT.YEAR_ID

La vidéo qui suit illustre :

- la création (et le test) des deux premières requêtes SQL sous forme de Data Sources (CDA) ;

- la création des deux premiers composants : la liste déroulante ainsi que le diagramme en secteur ;

- l'affectation des deux requêtes aux composants respectifs.

Animation en format "swf" non supportée.
Contenu uniquement consultable en ligne à cette adresse :
https://www.youtube.com/v/S9fRxQjnBVg

4 - Mise en place des Listeners (gestion des événements)

Certains composants sont « à l'écoute » d'autres composants via des « Listeners » (écouteurs) : c'est de cette façon que les graphiques sont rendus dynamiques.

Ainsi dans notre exemple, les données présentées dans le diagramme en secteur (Pie Chart) dépendent de l'année sélectionnée dans la liste déroulante, tandis que celles de l'histogramme (Bar Chart) dépendent à la fois de l'année mais aussi de la zone cliquée depuis le camembert.

Deux paramètres sont à créer pour notifier les événements possibles pour les mises à jour. Nommons ces paramètres « param_year » et « param_zone », ceux-ci étant définis depuis le menu « Components ».

Tout composant qui est notifié (via son Listener) du changement de valeur d'un des paramètres est susceptible de se remettre à jour automatiquement. Ainsi les graphiques deviennent dynamiques ; il suffit pour cela de positionner les paramètres correspondants dans les clauses WHERE des requêtes SQL.

La vidéo qui suit illustre :

- la création du paramètre « param_year » et sa prise en compte dans le diagramme en secteur ;

- la création de l'histogramme (Bar Chart) ;

- la création du paramètre « param_zone » et sa prise en compte dans l'histogramme conjointement avec le paramètre année. On rend le Pie Chart cliquable en définissant sa propriété « Clickable » à « True » et en saisissant le code JavaScript ci-dessous dans la propriété « Click Action ». La méthode fireChange permet d'alerter les listeners du changement de valeur d'un paramètre.

function(s,c,v){
/* permet de changer la valeur de param_zone lors d'un clic sur une zone du PieChart
s: série, c: catégorie, v: valeur    */
Dashboards.fireChange('param_zone',c);
}

Animation en format "swf" non supportée.
Contenu uniquement consultable en ligne à cette adresse :
https://www.youtube.com/v/DF_-VZwFiJg

4-A - Finalisation du tableau de bord

Pour obtenir un tableau de bord présentable, il convient de faire quelques petites retouches :

Animation en format "swf" non supportée.
Contenu uniquement consultable en ligne à cette adresse :
https://www.youtube.com/v/9dnzusNmBiQ

5 - Autres liens (très) utiles…

Voici quelques ressources incontournables qui devraient vous permettre d'exploiter au mieux la puissance des C*tools :

- le site du projet : ctools.webdetails.org et celui de la société qui le porte, WebDetails ;

- un guide de référence complet : [download id="64"] ;

- l'excellent tutoriel de Slawomir Chodnicki: « Creating Dashboards with CDE » ;

- un tutoriel de TIKAL montrant l'élaboration d'un dashboard depuis un template sur des données en provenance de Bugzilla ;

- le blog de Ambient BI, qui explique notamment les techniques pour incorporer des indicateurset des barres proportionnelles dans des objets de type « Tableau » (vraiment génial, je conseille également la démo en ligne) ;

- un article détaillant l'installation de Cygwin pour le setup de C*tools sous Windows ;

- un très bon tutoriel conçu par StrateBI et un autre tutoriel pour la mise en place de filtres avancés (les deux en espagnol) ;

- des dashboards de démonstration conçus lors de sessions de formations aux C*tools ;

- la section consacrée aux C*tools sur le forum pentaho.

6 - Un autre exemple… et les sources !

Je vous propose de télécharger l'exemple proposé, avec en bonus un tableau de bord un peu plus élaboré.

Ce dernier comprend des titres dynamiques, un graphique de type « Line Chart » ainsi qu'un objet « Table » très commode pour représenter des indicateurs d'évolution entre les années N et N-1 (vidéo ci-dessous).

Cliquez ici pour télécharger les sources.

Note : le fichier « Demo CDE.zip » est à décompresser dans le répertoire /pentaho-solutions.

Animation en format "swf" non supportée.
Contenu uniquement consultable en ligne à cette adresse :
https://www.youtube.com/v/LI1qJE7App0

=> Retrouvez plus de tutoriels Pentaho sur osbi.fr.

7 - Remerciements

Je tiens ici à remercier l'équipe de Developpez.com pour ses relectures attentives et ses suggestions, et en particulier KalyParker et Maxime Gault.