IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

[OLAP] Utiliser ou Créer un moteur OLAP en JAVA


Sujet :

API standards et tierces Java

  1. #1
    Membre confirmé Avatar de Iphelias
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2007
    Messages : 126
    Par défaut [OLAP] Utiliser ou Créer un moteur OLAP en JAVA
    Bonjour,

    J'ai des problèmes pour réaliser une application JAVA qui me permettrait de me connecter à une Base de Donnée OLAP dans le but d'y executer des requêtes (MDX ??) afin de récupérer le resultat de la requête dans un fichier .XML et/ou .TXT.

    Mais je suis perdu. J'ai réussi a déployer MONDRIAN, une application J2EE permettant l'acces et le rendu graphique de base de données OLAP, et ainsi j'ai compris sont fonctionnement et j'ai pu valider ma Base de Données. Toutefois, je ne veux pas réaliser une application WEB. Je désire seulement faire un outil JAVA me permettant via une interface graphique de choisir une base de donneé et d'éxécuter une requete, afin d'enregister le resultat de la requête dans un fichier XML ou TXT. MONDRIAN, un server OLAP qui fonctionne en J2EE, est il possible d'utiliser ce server dans une application JAVA et non dans un environnement WEB??

    De plus j'ai trouvé des informations sur JOLAP une librairie qui permettrait de acceder et de manipuler des cubes.
    http://jcp.org/en/jsr/detail?id=069
    D'apres ce que j'ai remarqué cette librairie fait partie de Mondrian.

    Bref qqn aurait'il les connaissances pour m'orienter dans la bonne direction. Car pour le moment je ne sais pas réellement dans quel sens partir. Mondrian étant Libre j'ai acces aux sources et librairies.
    Mais comment utiliser seulement le moteur Java de mondrian ?
    QQn aurait t'il déjà essayer et réussi à developper une application Java pour acceder a une BD OLAP.

    Serait t'il possible de simplement développer, une application Java se connectant à ma BD R-OLAP et executant des requetes. Toutefois comment executer des requetes sur cette BD ? Mondrian utilise des requetes MDX (késako ?) est'il possible d'executer de telle requêtes directement sous Mysql ? etc ...

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Que veux-tu faire exactement ? Du OLAP ou du relationnel ? Une Base de Donnée OLAP cela n'existe pas !

    Si ton but est d'interroger des tables de bases de données en SQL, alors utilises le package java.sql.*. Tu trouveras de nombreux exemples sur le net.

    Maintenant si tu veux interroger un moteur OLAP avec du MDX, tu peux effectivement t'appuyer sur Mondrian. Mondrian est un moteur OLAP qui s'appuie sur un SGBD relationnel (R-OLAP). L'interface Web associée par défaut est JPivot mais tu peux très bien invoquer Mondrian avec autre chose que JPivot. Je peux te fournir un programme qui permet de soumettre des requêtes MDX au moteur Mondrian et récupérer les résultats de la requête.

  3. #3
    Membre confirmé Avatar de Iphelias
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2007
    Messages : 126
    Par défaut
    Bon oui je veux faire du OLAP et non du relationnel ! Je m'excuse pour avoir utiliser le therme BD OLAP qui n'est donc pas approprié.

    Merci pour les précision pour Mondrian. Donc il serait possible d'utiliser juste le moteur Java dans une appli Java ? Donc il serait possible d'avoir une application Java qui adresse des requetes MDX a du OLAP et de récupérer les résultat ?
    Bon je suis en train de regarder si je ne peux pas utiliser la librairie associé a Mondrian pour cela.

    Sinon oui je serais intéréssé si cela est possible pour récupérer ton Programme qui permet d'adresser des requetes MDX a Mondrian. Cela me permettra peut petre de percer un peu plus le fonctionnement de tout cela

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Alors si tu veux une interface toute prête, il y a JRubik qui fait cela : http://rubik.sourceforge.net/jrubik/intro.html !

    Sinon voilà un exemple un peu en vrac, à toi de l'adapter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    public class MondrianMoteur
    {
      public static void main(String[] args)
      {	
        String configuration =
          "Provider=mondrian;"+
          "Jdbc=jdbc:oracle:thin:<user>/<passwd>@<serveur>:<port>:<sid>;"+
          "Catalog=Calipso.xml;"+
          "JdbcDrivers=oracle.jdbc.OracleDriver;";
     
        String mdx =
          "  select {[Measures].[Montant],"+
          "          [Measures].[Frais de Dossier]} ON COLUMNS,"+
          "         {[Canal].[Tous les Canaux]} ON ROWS"+
          "  from [Production]";
     
        new MondrianMoteur().executeRequete(configuration, mdx);
      }
     
      private void executeRequete(String configuration, String requete)
      {
        Connection connection = null;
        try
        {
          DriverManager.getConnection(configuration, null, true);
          Query query = connection.parseQuery(requete);
          Result result = connection.execute(query);
          afficherResultat(result);
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
        finally
        {
          if (connection != null)
            connection.close();
        }
      }
     
      private void afficherResultat(Result result)
      {
        Axis[] axis = result.getAxes();
        for (int i=0; i<axis.length; i++)
          for (Position p : axis[i].getPositions())
            for (Member m : p)
              System.out.println(m.getCaption());
      }
    ]

  5. #5
    Membre confirmé Avatar de Iphelias
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2007
    Messages : 126
    Par défaut
    Merci bien, je vais me tourner vers le bout de code que tu m'a laissé d'apres ce que je vois il devrait plus ou moins répondre à mes besoins . Toutefois j'ai des petites questions, les objet Query, et Result c'est quoi ?

    Je Cocherais le topic Résolu qd j'aurais trouv ma solution en attente je suis toujours preneur d'aide ou commentaire .

    Je posterais ma solution qd je l'aurais trouvée.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    J'ai oublié de te mettre les imports :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import mondrian.olap.Axis;
    import mondrian.olap.Connection;
    import mondrian.olap.DriverManager;
    import mondrian.olap.Member;
    import mondrian.olap.Position;
    import mondrian.olap.Query;
    import mondrian.olap.Result;
    "Query" converti ta requête MDX en une structure Objet.
    "Result" est plus ou moins un équivalent du ResultSet en JDBC. C'est le tableau résultat de ta requête avec l'axe[0] en colonne et axe[1] en ligne.

    Mondrian a été conçu avant la spécification JSR-69 JOlap. Pour l'instant Mondrian n'implémente pas cette spécification et à ma connaissance personne ne s'est encore coller à en créer une implémentation.

  7. #7
    Membre confirmé Avatar de Iphelias
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2007
    Messages : 126
    Par défaut
    Bonjour,

    donc je continu à travailler sur mon sujet et je remerci grandement Duc Lebowski pour son aide.

    Toutefois j'ai un petit soucis dans mon programme en effet cela vient de la chaine configuration.

    L'erreur Rencontrée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    mondrian.olap.MondrianException: Mondrian Error:Internal error: Virtual file is not readable: Cube.xml
    	at mondrian.resource.MondrianResource$_Def0.ex(MondrianResource.java:752)
    	at mondrian.olap.Util.newInternal(Util.java:1168)
    	at mondrian.olap.Util.newError(Util.java:1183)
    	at mondrian.rolap.RolapSchema.load(RolapSchema.java:277)
    	at mondrian.rolap.RolapSchema.<init>(RolapSchema.java:215)
    	at mondrian.rolap.RolapSchema.<init>(RolapSchema.java:79)
    	at mondrian.rolap.RolapSchema$Pool.get(RolapSchema.java:872)
    	at mondrian.rolap.RolapSchema$Pool.get(RolapSchema.java:689)
    	at mondrian.rolap.RolapConnection.<init>(RolapConnection.java:149)
    	at mondrian.rolap.RolapConnection.<init>(RolapConnection.java:80)
    	at mondrian.olap.DriverManager.getConnection(DriverManager.java:190)
    	at mondrian.olap.DriverManager.getConnection(DriverManager.java:131)
    	at mondrian.olap.DriverManager.getConnection(DriverManager.java:55)
    	at MondrianMoteur.executeRequete(MondrianMoteur.java:68)
    	at MondrianMoteur.main(MondrianMoteur.java:55)
    Je suppose que cela vient du fait que mon .java n'est pas situé dans le dossier /Tomcat/webapps/mondrian ...
    J'ai donc essayé de copié de fichier Cube.xml et l'ajouter a mon projet mais cela n'a pas fonctionné.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Chaine de Connexion :String configuration =  	
          "Provider=mondrian;"+
      	"Jdbc=jdbc:mysql://localhost/test?user=root&password=root;"+ 
      	"Catalog=Test.xml;"+
      	"jdbcDriver=com.mysql.jdbc.Driver";

  8. #8
    Membre confirmé Avatar de Iphelias
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2007
    Messages : 126
    Par défaut
    Bon j'ai rélgé le pb temporairement en précisant l'URL complète du fichier.

    "Catalog=D:\\workspaces-eclipse\\OLAPExport\\src\\Cube.xml;"+

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 32
    Par défaut
    Et ça marche??je remarque que duc lebowsky écrit jdbcdriverS avec un s et pas toi....ça n'a pas d'importance? de plus tu ne précise pas le port de ton serv, moi j'ai essayé plein de chose...la plus probante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      String configuration =
          "Provider=Mondrian;"+
          "Jdbc=jdbc:mysql://localhost:3306/otn_transilien_olap?user=admin&password=admin;"+ 
          "Catalog=C:\\FoodMart.xml;"+ 
          "jdbcDrivers=com.mysql.jdbc.Driver";
     
            DriverManager.getConnection(configuration, null);
    Mais je n'arrive toujours pas avoir de connexion...si quelqu'un à une idée je suis ultra prenuer.merci d'avance.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 32
    Par défaut
    Hum ça marche il manquait juste quelques fichiers .jar (si ça interresse qqun faut tous les eigenbase, common-pool, common-math et olap4j).
    si quelqu'un a réussi à afficher le cube correctement ça m'intérresse aussi.

  11. #11
    Membre averti
    Inscrit en
    Février 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 25
    Par défaut mondrian
    Bonjour Duc
    Je suis débutante en BI, et j'ai récemment installé Mondrian.
    Mon but est d'exécuter des requêtes MDX sur ma base mysql et je veux afficher le résultat sous forme de tableau et de chart.
    Je sais bien qu'il faut écrire un schéma de donnée xml, mais ou devrais je le mettre? ( à la place de foodmart.xml?)
    Pourras tu me dire en détail comment je dois procéder c'est à dire m'indiquer exactement les étapes et les outils que je dois utiliser.
    J'ai voulu tester votre code mais les "import" ne sont résolus.
    Que devrai-je faire svp?
    Merci d'avance.

  12. #12
    Membre averti
    Inscrit en
    Février 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 25
    Par défaut methode getconnection desaprouvé
    Bonjour
    J'ai pu réussir à resoudre les prob des import non résolu, cependant j'ai tj ce message concernant la methode getConnection:
    DriverManager.getConnection(configuration, null, true);
    m'indiquant:
    "This element neither has attached source nor attached Javadoc and hence no Javadoc could be found."
    Comment pourrai je resoudre ce prob.

    Merci d'avance.

  13. #13
    Membre averti
    Inscrit en
    Février 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 25
    Par défaut
    Bonjour
    Bon, j'ai corriger l'erreur en remplacant par:
    connection = DriverManager.getConnection(connectString, null);
    Et en voici un code qui marche bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    import java.io.PrintWriter;
     
    import mondrian.olap.Connection;
    import mondrian.olap.DriverManager;
    import mondrian.olap.Query;
    import mondrian.olap.Result;
     
    public class connect {
    	public void requete (){
     
    	String connectString = "Provider=mondrian;" + 
    	"Jdbc=jdbc:mysql://localhost:3306/foodmart?user=root&password=123;" +
    	 "Catalog=file:C:\\Tomcat 6.0\\webapps\\mondrian\\WEB-INF\\queries\\FoodMart.xml;"+ 
    	"JdbcDrivers=com.mysql.jdbc.Driver";
     
    	System.out.println(connectString);
    	Connection connection = null;
    	connection = DriverManager.getConnection(connectString, null);
    	Query query = connection.parseQuery("SELECT {[Measures].[Unit Sales], [Measures].[Store Cost], [Measures].[Store Sales]} on columns," +
    	"{([Promotion Media].[All Media], [Product].[All Products])} ON rows "+
    	"FROM Sales " +
    	"WHERE ([Time].[1997])"); 
     
    	Result result = connection.execute(query);
    	result.print(new PrintWriter(System.out,true)); 
    	}
    	public static void main (String[] args){
    		new connect().requete();
     
    	}
    	}
    Cependant, je veux bien afficher le resultat ds un tableau ou un graphe. Comment pourrai je integrer le JPIVOT ds mon code?

    Merci d'avance.

  14. #14
    Membre confirmé
    Homme Profil pro
    Développeur Full Stack
    Inscrit en
    Janvier 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur Full Stack
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 26
    Par défaut Pouqquoi pas JFreeChart
    Pourquoi ne pas utiliser JFreeChart? j'ai l'intention d'utiliser cette solution pour afficher les données récupérer des resultats des requêtes MDX!

  15. #15
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Février 2014
    Messages : 3
    Par défaut
    je veux connecter java (netbeans ) et le serveur mondrian qui travail avec oracle 11g et je trouve pas comment ?

  16. #16
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Février 2014
    Messages : 3
    Par défaut
    J'ai trouvé la solution. le probleme si que on doit ajouter tout les fichier .jar necessaires qui se trouvent dans le dossier mondrian
    puis on doit specifier correctement les parametres de la fonction getconnection
    provider: on specifier ici le serveur dans notre cas c'est mondrian
    Jdbc: quelle driver jdbc on doit l'utiliser.
    catalog:l'emplacement du schema xml(le repertoire).

  17. #17
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Par défaut une fonction qui retourne les axes
    pour récupérer les résultats de ma requête et quand j'ai utilisé
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    result.print(new PrintWriter(System.out,true));
    voici le résultat que ça me donne
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Axis #0:
    {[Time].[1997]}
    Axis #1:
    {[Measures].[Unit Sales]}
    Axis #2:
    {[Store].[All Stores].[USA].[OR]}
    {[Store].[All Stores].[USA].[WA]}
    Row #0: 135,318
    Row #1: 248,732
    le problème c'est que je veux accédé à ces résultat, par exemple je voudrais récupérer tous les axes.
    mais quand j'utilise la fonction il m'affiche "[Lmondrian.olap.Axis;@13c9c43" et non pas axis #0
    pourquoi et comment faire?

Discussions similaires

  1. Connexion entre Eclipse et un moteur OLAP
    Par hanane_271 dans le forum Eclipse
    Réponses: 0
    Dernier message: 01/04/2015, 22h03
  2. le moteur olap
    Par semsima dans le forum Oracle
    Réponses: 1
    Dernier message: 02/08/2011, 11h48
  3. Créer des cubes olap et les interroger avec MDX
    Par tata_aga dans le forum Mondrian
    Réponses: 6
    Dernier message: 06/02/2010, 15h31
  4. Créer un cube OLAP avec Talend
    Par shark84 dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 11/05/2009, 15h22
  5. [SQL2K] Créer une base OLAP sur un serveur existant ?
    Par dotnet dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/01/2007, 11h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo