OSBI.FR - Open Source Business Intelligence

OSBI et « Cross Tabs » (tableaux croisés)

Ce petit article a pour but de présenter les différentes méthodes de mise en place de tableaux croisés (« Cross Tabs ») au sein de 3 moteurs de reporting Open source :

  • JasperReports
  • Eclipse BIRT
  • Pentaho Reporting.

Qu’est ce qu’un tableau croisé ?

Comme son nom l’indique, un tableau croisé permet d’obtenir une vue croisée sur des données, bien plus puissante qu’une simple vue tabulaire (dont la lecture se fait de haut en bas) .

Le but essentiel des tableaux croisés est donc de simplifier la lisibilité et de permettre des analyses comparatives avancées.

D’ailleurs, qui n’a jamais entendu parler des tableaux croisés dynamiques d’Excel ?

Pour les novices, je vous invite à consulter 2 excellents liens pour mieux appréhender l’intérêt des tableaux croisés :

http://fr.wikipedia.org/wiki/Tableau_croisé_dynamique

http://biblioxtrn.uqar.qc.ca/stat/Fichesstat/multivariable/tableaucroise/tableau.htm

Les tableaux croisés… par la pratique !

Pour démontrer les capacités des moteurs de reporting open source en matière de « Cross Tabs », le mieux est encore d’essayer d’en mettre en oeuvre quelques uns !

C’est ce que je vous propose dans la suite de cet article 😉

Pour cela je vous propose de travailler sur un jeu de données disponible sous la forme d’une base de données Hypersonic Java montée en mémoire (« SampleData »). Il s’agit de la base de données de test utilisée par le serveur de démonstration Pentaho, par BIRT et JasperServer (à qq différences prêt, mais on ne va pas chipoter…)

Il vous suffira ensuite de reproduire la méthodologie de création des tableaux croisés en visionnant les vidéos ci-dessous.

Tout d’abord, téléchargez la base de données ici :

Décompressez le fichier « hsqldb.zip » dans le répertoire C:\ (par exemple). JAVA doit être installé sur votre poste, la variable d’environnement JAVA_HOME doit également être déclarée…

Démarrer la base de données en cliquant sur « C:\hsqldb\start_hypersonic.bat »

Si tout se passe bien, vous devez obtenir la fenêtre DOS ci-dessous (à ne pas fermer bien sûr)

Notez bien également les informations de connexion à la base:

  • JDBC Url: jdbc:hsqldb:hsql://localhost/sampledata
  • User: sa
  • Password: password

Le driver (fichier jar) est disponible dans l’installation par défaut de iReport, en ce qui concerne BIRT, il faudra aller le chercher dans le répertoire d’installation: C:\hsqldb\lib\hsqldb-1.8.0.jar

Tableau croisé avec JasperReports 3.7

Lancer iReport, et suivre les indications de la vidéo ci-dessous…

Requête SQL permettant d’obtenir les données:

SELECT
     ORDERDETAILS."QUANTITYORDERED"  *   ORDERDETAILS."PRICEEACH" AS MONTANT,
     YEAR(ORDERS."ORDERDATE") AS ANNEE,
     MONTH(ORDERS."ORDERDATE") AS MOIS,
     CUSTOMER_W_TER."TERRITORY" AS ZONE,
     CUSTOMER_W_TER."COUNTRY" AS PAYS
FROM
     "PUBLIC"."ORDERS" ORDERS INNER JOIN "PUBLIC"."CUSTOMER_W_TER" CUSTOMER_W_TER ON ORDERS."CUSTOMERNUMBER" = CUSTOMER_W_TER."CUSTOMERNUMBER"
     INNER JOIN "PUBLIC"."ORDERDETAILS" ORDERDETAILS ON ORDERS."ORDERNUMBER" = ORDERDETAILS."ORDERNUMBER"

Tableau croisé avec Eclipse BIRT 2.6

Lancer BIRT, et suivre les indications de la vidéo ci-dessous..

Requête SQL permettant d’obtenir les données:

SELECT
     ORDERDETAILS."QUANTITYORDERED"  *   ORDERDETAILS."PRICEEACH" AS MONTANT,
     ORDERS."ORDERDATE",
     CUSTOMER_W_TER."TERRITORY" AS ZONE,
     CUSTOMER_W_TER."COUNTRY" AS PAYS
FROM
     "PUBLIC"."ORDERS" ORDERS INNER JOIN "PUBLIC"."CUSTOMER_W_TER" CUSTOMER_W_TER ON ORDERS."CUSTOMERNUMBER" = CUSTOMER_W_TER."CUSTOMERNUMBER"
     INNER JOIN "PUBLIC"."ORDERDETAILS" ORDERDETAILS ON ORDERS."ORDERNUMBER" = ORDERDETAILS."ORDERNUMBER"

Tableau croisé avec Pentaho Report Designer 3.6

Mauvaise nouvelle, l’interface de Pentaho Report Designer ne permet pas de mettre en place des tableaux croisés !

Bien que l’API de reporting soit capable de manipuler des objets de ce type, le client de conception (Designer) n’implémente pas de façon simple les Cross Tabs.

En fait c’est encore pour l’instant une fonction cachée et peu exploitable (pas d’assistant de création et drag&drop non disponible)

Pour ceux qui veulent tester malgré tout, vous trouverez un guide de mise en place très détaillé sur ce blog. Mais vous constaterez vite que l’ergonomie est encore très loin de celle proposée par BIRT ou iReport.

Pour l’instant, c’est encore un gros manque du côté de Pentaho par rapport à la concurrence.

Cette absence fonctionnelle devrait cependant être comblée d’ici la fin de l’année comme le précise Thomas Morgner (alias Taqua) sur le forum de Pentaho: un éditeur graphique est en effet prévu dans la prochaine version CE de Report Designer (on notera qu’il y aura également une version plus avancée dans une version EE)

Conclusion

Pour l’instant, Pentaho Report Designer (PRD) est hors course en ce qui concerne la mise en place de tableaux croisés. Faites bien attention à vérifier ce point (ou soyez patients) si vous souhaitez utiliser PRD, qui présente cependant des avantages non négligeables, comme par exemple la diversité des sources de données gérées (flux ETL Kettle, sources OLAP…)

iReport présente un assistant de création sympathique qui permet de réaliser des tableaux croisés très « jolis », notamment avec une grande diversité de présentation (styles, couleurs). On regrettera cependant que le tableau croisé ne puisse comporter que 2 niveaux maxi par axe et une seule mesure (pas évident de retoucher le tout après la création du tableau…)

Eclipse BIRT est sans aucun doute le Designer qui permet d’aller le plus loin dans la création de Cross Tab. L’objet « Data Cube » permet de gérer autant de dimensions, de niveaux et de mesures souhaitées.

La gestion de la dimension « Date » se fait automatiquement, pas besoin de bidouiller la requête SQL ou de travailler avec une table de dimension temporelle.

Même s’il faut ajuster manuellement le côté « présentation », BIRT est de loin l’outil de reporting (libre) le plus intéressant pour générer des tableaux croisés !

Eclipse BIRT présente également un autre atout, la possibilité de rajouter de nouvelles sources de données sous la forme de plugins Eclipse (ODA Driver).

Je reviendrai sur ce point très prochainement 😉

3 Comments

  1. Je me suis intéressé à Birt mais je suis pas arrivé à faire un crosstab avec 2 mesures en les mettant sous la dimension temps comme dans l’exemple donné pour Pentaho.
    Je voulais savoir si c’était possible ou pas ?
    Merci

  2. Sorry….j’y suis arrivé en revanche je n’arrive pas à mettre la mesure au dessus de la dimension

    Nb_user | Nb_order
    Janv. 2010 | Fev. 2010 | Mar. 2010 Janv. 2010 | Fev. 2010 | Mar. 2010

    M1
    M2

    As-tu déjà fait ça ?

Les commentaires sont fermés.