OSBI.FR - Open Source Business Intelligence

Le requêtage SQL dynamique avec Pentaho Reporting (3/3)

Après JasperReports et BIRT, voici le dernier article du « triptyque » consacré au requêtage dynamique SQL dans les moteurs de reporting open source.

Voyons donc la méthodologie de mise en place dans Pentaho Report Designer.

Pour cela, il vous faudra utiliser une version récente (>= v3.5) du moteur de reporting de Pentaho (pour rappel celui-ci a été complètement refondu fin 2009).

Vous pouvez télécharger sur SourceForge une des dernières versions stables (3.7 ou 3.8)

Utilisation (basique) des paramètres dans Pentaho Report Designer

1. Création de la source de données

Dans l’onglet « Data », créer une nouvelle connexion de type « JDBC Datasource » sur la base hypersonic SampleData :

2. Création de la requête principale

Tout comme JasperReports, Pentaho Report Designer doit définir une requête principale.

Les données de cette requête sont en effet utilisées pour l’alimentation de la bande de détail (= Item Band)

Il est conseillé d’utiliser le « Query Builder » pour construire la requête SQL (Synthèse des ventes), ceci afin de réduire les erreurs liées aux fautes de frappe :

SELECT
   CUSTOMERS.COUNTRY AS PAYS,
   SUM(ORDERFACT.TOTALPRICE) AS MESURE,
   ORDERFACT.YEAR_ID AS ANNEE,
   PRODUCTS.PRODUCTLINE AS GAMME_PRODUIT
FROM
   PRODUCTS
   INNER JOIN ORDERFACT ON PRODUCTS.PRODUCTCODE = ORDERFACT.PRODUCTCODE
   INNER JOIN CUSTOMERS ON ORDERFACT.CUSTOMERNUMBER = CUSTOMERS.CUSTOMERNUMBER
WHERE 
   PAYS= 'France'
GROUP BY 
   PAYS, GAMME_PRODUIT, ANNEE

3. Création de la requête permettant d’afficher la liste déroulante avec la liste des pays :

Il suffit de créer une autre « Query » intitulée par exemple « Liste Pays »

SELECT DISTINCT COUNTRY FROM COUNTRIES

4. Création du paramètre « Choix du pays »

Dans l’onglet « Data », ajouter un paramètre de type « Drop Down » (liste déroulante).

Pour cela, faire un clic droit sur l’entrée « Parameters » puis « Add Parameter… »

La source des données pour le chargement des pays dans la liste déroulante s’effectue dans la zone « Query ».

PS: Les zones « Value » et « Display Name » servent à définir respectivement la clée interne (clée primaire par exemple) et la valeur à afficher pour l’utilisateur final. Dans mon exemple, Value = Display Name = « COUNTRY »

5. Prise en compte du paramètre dans la requête principale

La syntaxe pour que la requête SQL soit filtrée sur le pays choisi est similaire à celle employée dans iReport

Mise en place d’une requête SQL dynamique

Pour qu’on puisse sélectionner dynamiquement la colonne  dans la requête SQL, il faut procéder en 3 étapes :

  • Création d’un tableau de stockage interne pour le choix de la mesure (TOTALPRICE ou QUANTITYORDERED) à afficher (=> nouveau DataSet de type « Table ») :

  • Création d’un paramètre (« paramMesure ») pour la sélection interactive :

  • Définition d’une requête de type « CUSTOM » au niveau du rapport maître :

Affecter la source de données « SampleData » au DataSet « JDBC (Custom) »

Se rendre ensuite sur les propriétés du « Master Report » dans l’onglet « Structure »

Saisir manuellement dans l’onglet « Attributes » le « query name » en langage de formule (Open Formula)

Dans la formule, les paramètres sont passés avec la syntaxe [parameterName] dans une requête SQL standard. Respectez bien la syntaxe « open formula » (concaténation des chaînes de caractères avec des guillements et & ).


Tutoriel Vidéo

 

 

Télécharger l’exemple :

Retrouvez un article sur ce même sujet chez BizCubed

1 Comment

  1. Pentaho query uilder is based on SQLeonardo (frozen project since 2009).
    A new project called SQLeo has started one year ago and has corrected more than 50 bugs yet.

    Perhaps could Pentaho swith to SQLeo or backport fixes to SQLeonardo …

    Regards
    PAscal

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*