OSBI.FR - Open Source Business Intelligence

Pentaho CDE : Table component et AddIns…

Dans Pentaho CDE, le « Table Component » est un moyen simple et puissant pour afficher une liste de données.

En voici un exemple (comme habituellement j’utiliserai la base SampleData comme datasource)

Imaginons qu’on veuille afficher dans un tableau des informations pour suivre l’évolution des ventes d’un produit d’une année à l’autre. Pour chaque produit, on souhaite afficher les colonnes suivantes :

  • Montant des ventes année N-1
  • Montant des ventes année N
  • Evolution des ventes de l’année N-1 à N (en %)
  • Ecart entre les 2 années

Idéalement on souhaiterait également représenter l’évolution et l’écart par des symboles graphiques

La requête SQL qui permet de construire chaque ligne du tableau est une jointure de la table des commandes sur elle-même :

SELECT
CURRENT_YEAR.PRODUCTNAME,
PREVIOUS_YEAR.AMOUNT AS PREVIOUS_AMOUNT,
CURRENT_YEAR.AMOUNT AS CURRENT_AMOUNT,
(CURRENT_YEAR.AMOUNT/PREVIOUS_YEAR.AMOUNT-1)*100 AS TRENDING,
(CURRENT_YEAR.AMOUNT - PREVIOUS_YEAR.AMOUNT) AS DELTA
 
FROM
  (SELECT SUM(TOTALPRICE) AS AMOUNT, PRODUCTNAME
     FROM PRODUCTS INNER JOIN ORDERFACT ON PRODUCTS.PRODUCTCODE =ORDERFACT.PRODUCTCODE
     WHERE YEAR_ID = 2004 GROUP BY PRODUCTNAME) CURRENT_YEAR
 
  INNER JOIN
 
  (SELECT SUM(TOTALPRICE) AS AMOUNT, PRODUCTNAME
     FROM PRODUCTS INNER JOIN ORDERFACT ON PRODUCTS.PRODUCTCODE =ORDERFACT.PRODUCTCODE
     WHERE YEAR_ID = 2003 GROUP BY PRODUCTNAME) PREVIOUS_YEAR
 
  ON CURRENT_YEAR.PRODUCTNAME = PREVIOUS_YEAR.PRODUCTNAME

Le tableau se construit très rapidement (cf vidéo à la fin de cet article)

2 points importants sont à noter :

 

I. A chaque ligne du tableau, on peut associer des éléments graphiques appelés « AddIns »

Ces AddIns-ci sont sélectionnés lors du paramétrage de chaque colonne et peuvent être de plusieurs types :

Par exemple :

  •  Sparkline  :


  • DataBar :

 

  • Trend Arrow :

 

  • Bullet Chart :

 

Une documentation complète de l’ensemble des AddIns est disponible dans le dashboard « AddIn Reference ».

 

II. Les AddIns possèdent tous une configuration par défaut, mais sont aussi librement configurables via une redéfinition Javascript.

Dans mon exemple, je renseigne la fonction « Pre Change » du composant « Table » afin de modifier le comportement de l’AddIn « Trend Arrow ».

Avec cette méthode, on peut ainsi afficher à la fois la valeur et le symbole graphique dans le tableau !

function f(){
 
     this.setAddInOptions("colType","trendArrow",function(state){
 
     if(state.colIdx == "3"){
       return { includeValue: true,
                good: false,
                valueFormat: function(v,format,st) {return sprintf(format,v) + "%";}};
       }
   });
}

Vidéo de démo

10 Comments

  1. Great demo, thx!

    Any idea how you can change for example the color of the dataBar?

    Cheers!

  2. Just look the documentation in \plugins-samples\CDE\CDE-Reference folder, « AddIn Reference » Dashboard
    Cheers

  3. Thanks for this post! Really interesting.
    A question:
    in the function f(){…. you test state.colIdx == « 3 » to verify if it’s the third column.
    How to check the column / row value?
    thanks

  4. Hi! Great tutorial! I just went through it, it was very helpful!
    I have a question though, how can I add a scroll bar or pagination horizontally? I have a lot of columns so the table is really flowing out of the container to the right. I didn’t manage to do it myself or even find a clear explanation online. Please let me know if you have some hints for this.
    Thank you very much!

  5. Thank you very much for your comment ! I still have no answer to your question, just check it on forums.pentaho.com !

  6. Hello!
    Can you help me how to use the sparkline ColumnType? The key is the datasource? I tried with the query above but does not work. Can describe in a few steps the implementation, or what needs to be change according to this example?

    Thank you!

  7. Hi

    Have you read documentation in pentaho-solutions folder here :
    /plugins-samples/CDE/CDE Reference/AddIn Reference (Dashboard) ?

  8. Hey ! Sorry to bother you again but i’m trying to modify a table component and i have some troubles with some add-ins types. If the colType is a string, how can you access a cell/column to add at the end of the data (which is a number) : « % » or « € » ?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*