I. 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 ».
II. Prérequis▲
Vous trouverez le logiciel (open source) ici : http://kettle.pentaho.org/http://kettle.pentaho.org/
et le plugin à ajouter ici : http://sourceforge.net/projects/palokettleplug/http://sourceforge.net/projects/palokettleplug/
vous aurez également besoin de cela : http://www.jpalo.com/en/products/palo_java_api.html/http://www.jpalo.com/en/products/palo_java_api.html/ ou http://sourceforge.net/projects/jpalo/http://sourceforge.net/projects/jpalo/
Utilisation de PDI▲
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.
Création des connexions▲
Chez moi cela donne ceci :
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.
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).
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.
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.
À 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 côté 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 à côté les colonnes avec les différentes mesures, ici cela va être le nombre de personnes 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 :
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 côté de Palo :
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.
III. Remerciements▲
Je remercie Fleur-Anne BLAIN pour m'avoir aidé.