OSBI.FR - Open Source Business Intelligence

Colonnes dynamiques dans un Table Component (Pentaho CDE)

Voici un nouvel article pour répondre à l’interrogation d’un client à la question suivante :

« Comment afficher dynamiquement les colonnes d’un tableau CTools ? »

Réponse : en utilisant Kettle (encore lui..) comme source de données à votre tableau !

Introduction

Et oui, si on utilise une source de données de type SQL dans un Table Component d’un Dashboard Pentaho CTools, la seule chose qu’on peut rendre paramétrable dans le tableau, ce sont les enregistrements renvoyés via un(des) filtre(s) de la clause WHERE SQL.

Pour plus de détail, se référer à cette question dans  l’article Requêtage dynamique SQL dans Pentaho CDE.

J’étends aujourd’hui le sujet pour permettre au tableau d’afficher autant de colonnes que souhaitées :

  • soit via une sélection côté utilisateur (cf la vidéo ci-dessous)
  • soit via une gestion automatisée, par exemple une construction dynamique du tableau en fonction de « champs flexibles » stockés dans une base de données (c’est le cas de mon client)

Mise en œuvre

1/ Tout d’abord, vous devez créer une transformation Kettle permettant de générer dynamiquement les colonnes à retourner via une étape « Extraction depuis table ». Ces colonnes seront stockées dans un paramètre (selected_fields) qu’on n’oubliera pas de déclarer comme paramètre de la transformation :

2/ Ensuite, vous devez importer cette transformation PDI sur votre Pentaho BI Server en tant que « datasource Kettle » et déclarer que celle-ci prend comme paramètre « selected_fields ». On aura bien sûr créé au préalable un paramètre global « selected_fields » (composant « Simple Parameter »)

On déclare ensuite la transformation comme source de données du tableau, sur lequel on active un Listener sur « selected_fields » :

3/ Il vous reste ensuite à rendre votre tableau (enfin les colonnes du tableau) paramétrables, par exemple sur un Select Component :

4/ Puis enfin afin que tout fonctionne correctement, il faut placer la fonction ci-dessous dans la méthode Pre-Execution du Table Component (sinon celui-ci ne sera pas capable de reconstruire dynamiquement les colonnes de votre tableau) :

 function() { 
   this.chartDefinition.colHeaders = []; 
   this.chartDefinition.colTypes = []; 
   this.chartDefinition.colFormats = []; 
 }

Une fois tout cela effectué vous obtiendrez le résultat souhaité !

Téléchargement

Vous pouvez télécharger l’exemple présenté et l’importer sur votre serveur Pentaho (version 6 minimum). Nota : Les données présentées reposent sur la base de données interne SampleData.

A bientôt pour un article sur une autre utilisation de PDI comme source de données dans un dashboard CTools 😉

4 Comments

  1. JE te remercie pour ce magnifique travail , merci beaucoup , J’ai un problème concernant Kettle query l’heure de l’exécution !! le server m’affiche des erreurs comme suit :
    javax.ws.rs.WebApplicationException: pt.webdetails.cda.dataaccess.QueryException: Cannot find the specified transformation step output
    at pt.webdetails.cda.CdaUtils.doQuery(CdaUtils.java:185)
    …..
    S’il te plait j’ai besoin d’aide

  2. Bonjour
    L’étape dans votre transformation KETTLE s’appelle-t’elle bien « output » (car c’est ça le pb : « Cannot find the specified transformation step output »)

  3. Hello,

    do you hava any idea how to add a coment in cell of table component ?
    thanks

  4. Hello,
    It requires some specific developments : javascript code to add commentc cell in table component + SQL (or Kettle endpoint) to update database with all comments
    Probably a way to start : BISSOL Table Editor (BI server plugin)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*