Introduction

Si comme moi vous avez découvert la base de données olap PALO vous avez dû rapidement rencontrer un problème pour importer des données en nombre. La fonction d'import via Excel est simple mais cela prend beaucoup de temps lorsqu'il s'agit d'importer des dizaines de milliers de lignes. C'est là qu'a commencé ma recherche pour trouver un outil qui me permettrait d'importer les données plus rapidement.

Mon choix s'est porté sur Kettle, dénommé maintenant " Pentaho Data Integration ".

I. Pré-requis

II. Utilisation de PDI

II-A. Piège à éviter

Le piège dans lequel je suis tombé au début (apparemment je ne suis pas le seul) concerne la connexion avec Palo, en effet le bouton « tester » ne fonctionne pas, alors qu'en fait cela fonctionne, donc oubliez le test de connexion et indiquez directement tous vos paramètres.

II-B. Création des connexions

Chez moi cela donne ceci :

Image non disponible


Host Name : il s'agit de l'adresse du serveur, ici la bdd est installée en local, il s'agit donc de « localhost ».

Database Name : il s'agit du nom de la base de données (ces informations se retrouvent dans le plugin Excel si vous n'êtes pas sûr de vous.

Image non disponible


Port Number : chez moi c'est le 7778 mais cela pourrait être différent chez vous, la configuration se fait à l'installation du serveur, vous pouvez cependant retrouver cette information dans le plugin Excel (cf ci-dessus 127.0.0.1 :7778).

User Name : par défaut le compte est « admin » mais vous pouvez avoir créé différents utilisateurs donc à vous de voir selon votre configuration.

Password : par défaut le mot de passe pour le compte « admin » est « admin » (user = mdp)

II-C. Création de la transformation

Après avoir créé les connexions, la première avec la base de données dans laquelle vous récupérez les données, et la deuxième avec Palo (cf ci-dessus), vous allez créer une nouvelle transformation.

Image non disponible


On commence par extraire les données de la base. C'est une étape importante car il faut que les données aient une forme particulière si vous voulez les importer dans Palo.

Image non disponible


A vous de voir comment vous voulez procéder, il faut que les données aient la structure suivante :

Ste Groupe Sexe AffectationLib CategorieLib Annee Mois Mesures Valeur
dimension n°1 dimension n°2 dimension n°3 dimension n°4 dimension n°5 dimension n°6 dimension n°7 Nom utilisé pour les mesures valeur de la mesure pour les dimensions indiquées


En d'autres termes, vous récupérez d'abord l'ensemble des dimensions, puis vous ajoutez deux colonnes, la première indiquera le nom de la mesure et la deuxième la valeur à indiquer pour la sélection des dimensions.
Par exemple :

Ste Groupe Sexe AffectationLib CategorieLib Annee Mois Mesures Valeur
Danone Evian F Finance cadre 2005 3 26-30ans 3
Danone Evian M Marketing agent de maîtrise 2006 1 50-55ans 6
Danone Evian M Marketing cadre 2008 6 AgeMoyen 42


Ici vous allez importer les données dans un cube donc il y a théoriquement plusieurs mesures possibles, de mon coté j'ai préparé des tables dans ma base de données qui vont présenter les données correctement pour Palo, cela limite les transformations nécessaires à la mise en forme et me fait gagner du temps à l'import.

Dans l'exemple ci-dessus j'ai au début une vue qui indique toutes les possibilités de croisement des dimensions puis à coté les colonnes avec les différentes mesures, ici cela va être le nombre de personne entre 20 et 25 ans, entre 26 et 30 ans, etc, l'âge moyen, etc. Je vais ensuite alimenter une table dans laquelle je vais limiter chaque ligne à une seule mesure, un exemple :

 
Sélectionnez
SELECT  Ste, Groupe ,Sexe ,AffectationLib ,CategorieLib ,Annee ,Mois, '26-30ans' AS Mesures
,[26-30ans] AS Valeur FROM MaTable WHERE [26-30ans] IS NOT NULL
UNION
SELECT  Ste, Groupe ,Sexe ,AffectationLib ,CategorieLib ,Annee ,Mois, '50-55ans' AS Mesures
,[50-55ans] AS Valeur FROM MaTable WHERE [50-55ans] IS NOT NULL
UNION
SELECT  Ste, Groupe ,Sexe ,AffectationLib ,CategorieLib ,Annee ,Mois, 'AgeMoyen' AS Mesures
,[AgeMoyen] AS Valeur FROM MaTable WHERE [AgeMoyen] IS NOT NULL

Je n'ai plus qu'à récupérer cette table dans Kettle.

Du coté de Palo :

Image non disponible

D'abord vous sélectionnez la connexion créée précédemment, puis si vous voulez vider le cube vous cochez « clear Cube ... », vous sélectionnez alors le cube (normalement si la connexion est ok cela doit fonctionner). Vous cliquez sur « Get Dimensions », vous obtenez la liste des Dimensions, la colonne « Field » est alors vide. En entrant dans cette colonne vous allez avoir accès à une liste déroulante, celle-ci présente les différentes colonnes de l'extraction, vous n'avez plus qu'à joindre celle-ci. Bien entendu vous l'aurez compris, à la fin vous sélectionnez pour « mesures » la colonne comportant le nom des mesures puis pour « Cube Measure » la colonne comprenant les valeurs.

Voilà vous avez terminé, il n'y a plus qu'à enregistrer et lancer le tout. Si vous avez des erreurs vous pourrez identifier la partie bloquante dans le log.

Conclusion

Jusqu'à maintenant je n'ai utilisé que ce type de transformation, mais il est également possible d'exporter les données du cube de Palo, et il est aussi possible d'importer ou d'exporter les valeurs des dimensions ainsi que les attributs.

J'espère avoir été assez clair, si vous avez des remarques pour améliorer ce tutoriel n'hésitez pas.

Remerciements

Je remercie Fleur-Anne BLAIN pour m'avoir aidé.