Le Blog de C-quad

SpagoBI 3.0 – Accéder à une base de données


Nous avons vu précédemment comment installer SpagoBI, nous allons maintenant le configurer afin qu’il puisse accéder à une base de données.

C’est mieux si un portail de restitution peux lire vos données 😉

Plutôt que de prendre le contenu d’une base de données qui ne vous est pas accessible, nous allons utiliser la base de données foodmart.

Créer la base de données Foodmart pour nos tests

Nous allons télécharger les données foodmart pour mysql.

Après décompressions de l’archive nous pouvons lancer l’import dans mysql :

$ mysql -u root -p < 'foodmart 20090211 1624.sql'

Nous donnons ensuite les droits à SpagoBI sur cette nouvelle database :

mysql> GRANT ALL PRIVILEGES ON `foodmart`.* TO 'SpagoBI'@'%';

Une petite vérification nous permet de constater que tout est ok :

$ mysql -u SpagoBI -p foodmart

Ajout de la connexion dans tomcat

Tel que nous l’avons fait pour la configuration de la base de données propre à SpagoBI, nous allons ajouter un connexion Jndi pour foodmart.
Pour cela nous éditons le fichier /etc/tomcat6/server.xml et ajoutons dans la section GlobalNamingResources :

<Resource name="jdbc/foodmart" auth="Container" type="javax.sql.DataSource"
          maxActive="100" maxIdle="30" maxWait="10000"
          username="SpagoBI" password="SpagoBI" driverClassName="com.mysql.jdbc.Driver"
          url="jdbc:mysql://localhost:3306/foodmart"/>

A noter : l’édition du fichier server.xml permet à ce que toutes les webapps de tomcat aient accès à cette connexion. Si vous voulez limiter la définition de la connexion à une seule application, il faut ajouter les lignes ci dessus au fichier context.xml du répertoire META-INF de votre application.

Création d’un DataSource dans SpagoBI

Se connecter avec le compte biadmin et aller dans Ressources -> Source de données :

Et renseigner les paramètres conformément à ce qui a été saisi dans le fichier server.xml :

On tombe alors sur une erreur :

it.eng.spago.error.EMFInternalError: severity [ERROR] description [DefaultScrollableDataResult::getDataRow: java.sql.SQLException: Column 'DS_ID' not found

Pour corriger cet erreur, il faut modifier le fichier statements.xml situé dans webapps/SpagoBI/WEB-INF/conf/config/ en y supprimant les alias.

exemple :

Select DS_ID as ID

doit être modifié en

Select DS_ID

Je n’ai par contre pas trouvé pourquoi cela ne fonctionne pas avec la première écriture.  A ma connaissance les alias de colonnes existent depuis la norme SQL92. A votre avis le problème vient du driver odbc mysql ? ou de l’utilisation qui en est faite par SpagoBI ? Je ne sais pas ou déposer mon rapport de bug …

edit : Après recherche approfondie, il n’est plus nécessaire de modifier le fichier statements.xml. Ce problème sur les alias est tracé dans le bug Mysql 35150 et 31499. Afin de corriger le problème il faut modifier la connexion mysql.

Pour cela éditer le fichier /etc/tomcat6/server.xml et ajouter « ?useOldAliasMetadataBehavior=true » :

<Resource name="jdbc/SpagoBI" auth="Container"
 type="javax.sql.DataSource"
 maxActive="100" maxIdle="30" maxWait="10000"
 username="SpagoBI" password="SpagoBI" drvierClassName="com.mysql.jdbc.Driver"
 url="jdbc:mysql://localhost:3306/SpagoBI?useOldAliasMetadataBehavior=true" />

Dans Ressources -> DataSet -> onglet Type on sélectionne Query. La Base de données que l’on vient de référencer « Foodmart » et on saisi une requête pour vérifier que la connexion est bien fonctionnelle :

Dans mon exemple j’ai pris :

select * from product;

Cliquer sur « Preview » et l’on constate que tout fonctionne 🙂

7 réponses à to “SpagoBI 3.0 – Accéder à une base de données”

  • ryma:

    j’ai installé spagobi3.1, mais j’arrive pas à créer des data set, j’utilise oracle 10g, la connexion marche.

    • CedricOLIVIER:

      Je n’ai malheureusement pas de base oracle actuellement sous la main pour tester. Vérifie les logs dans /var/log/tomcat6/, tu devrait avoir une erreur qui je l’espère te mettras sur la piste d’une solution.

  • Chrisophe R.:

    Avant tout merci pour ces tutos excellents sur SpagoBI, c’est vraiment agréable !! 🙂

    J’ai développé un logiciel Web de gestion d’établissement scolaire assez conséquent maintenant. Il fonctionne sur la plupart des bases de donnée connues mais je l’installe généralement avec la base de donnée IBM DB2 Express-c. A l’avenir je pense utiliser MySql.
    Mon problème (enfin ! :)), j’ai un SpagoBI 3.2 fonctionnel mais je n’arrive pas à créer un Data source vers ma base de donnée DB2 Express-c. (Cela marche avec une BD Mysql)

    Ce que j’ai fait :
    1/ Ajout du connecteur jdbc DB2 (db2jcc.jar) dans /usr/share/java et ajout du lien vers /usr/share/tomcat6/lib
    2/ Création de la connection Tomcat

    3/ Sur mon serveur Windows qui héberge la BD DB2 Express-c j ‘ai ajouté l’utilisateur SpagoBI et je lui ai attribué tous les droits
    4/ Et ………. je n’arrive pas/ne sait pas/ne voit pas comment configurer le Data source !
    5/ J’ai écarté les éventuels problèmes de pare feu en les désactivant tous.

    Une idée ? une piste ? un conseil ?

    Par avance merci

  • CedricOLIVIER:

    Merci beaucoup.

    Le lien vers cette connexion a t’il bien été défini dans le fichier contexte situé dans le répertoire /usr/share/tomcat6/webapps/SpagoBI/META-INF ?

    Sinon je te conseille de te tourner vers le forum du projet : http://www.spagoworld.org/jforum/forums/list.page qui je l’espère devrait pouvoir t’aider à trouver la cause du problème.

    • Christophe R.:

      Accès à ma BD IBM DB2 9.7.4 Express-C réussie 🙂

      Ce que j’ai fait :

      1/ Ajout du lien dans /etc/tomcat6/catalina/localhost (SpagoBI.xml) Idem foodmart mais avec ma_BD DB2 Express-C. En fait le « Resourcelink » je l’avais déclaré dans le context.xml de l’appli SpagoBI. (/webapp/SpagoBI/META-INF.

      2/ Ajout de la licence DB2 jdbc_LI_fr dans /usr/share/java en plus du driver jdbc db2jcc.jar puis lien ln des deux fichiers vers /usr/share/tomcat6/lib
      NB: Les drivers jdbc sont accessibles sur le site d’IBM si on est inscrit.

      3/ Création dans serveur xml ou dans le contexte de l’appli SpagoBI de la ressource

      4/ Création du data set avec jndi java:comp/env/jdbc/ma_BD, PATOIS = default. ATTENTION le test de connexion échoue dans mon cas !! Idem avec BD foodmart MySQL. Pour autant mon data set fonctionne (idem foodmart) ! MAIS attention les requêtes doivent être de la forme SELECT * FROM DB2ADMIN.PRODUIT. SELECT * FROM PRODUIT donne une erreur. Le fait de renseigner le attribut shema dans le data source ne fonctionne pas mieux.

      En espérant que cela aidera éventuellement.

      Cordialement

  • RACHID T:

    Salut,
    quand j’exécute mon document OLAP (créé avec JPIVOT engine), je vois une page qui se charge indéfiniment (ATTENDERE PREGO message) et montre que toute liens Mondrian, mais pas ma table
    Je vois dossier des journaux et j’ai lu l’erreur suivante :

    ERROR it.eng.spagobi.engines.drivers.jpivot.JPivotDriver.getMap:161 – Error while recovering execution parameter map:
    java.lang.Exception: Active Template null

    Quel est le problème? C’est URGENT!
    Merci

Laisser un commentaire