Bonjour,
J'ai une base de données MySql et j'ai réussi à installer le serveur mondrian et créer les cubes correspondants à ma base.
Maintenant mon but est d'exécuter des requêtes MDX depuis une application Java pour interroger le serveur mondrian et par la suite utiliser les résultats des requêtes pour dessiner des charts... (par exemple avec la librairie JfreeChart).
Voilà le code que j'utilise et ça me permet de récupérer le résultat :
Et voilà résultat de la requête:
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 import java.io.PrintWriter; import mondrian.olap.Cell; import mondrian.olap.Connection; import mondrian.olap.DriverManager; import mondrian.olap.Query; import mondrian.olap.Result; import java.lang.Object; import mondrian.olap.Axis; import mondrian.olap.AxisOrdinal; import mondrian.olap.Hierarchy; import mondrian.olap.QueryAxis; public class connect { public void requete (){ String connectString = "Provider=mondrian;" + "Jdbc=jdbc:mysql://localhost:3306/3g_database?user=root&password=olfa;" + "Catalog=file:C:\\temp\\SchemaTest.xml;"+ "JdbcDrivers=com.mysql.jdbc.Driver"; System.out.println(connectString); Connection connection = null; connection = DriverManager.getConnection(connectString, null); Query query = connection.parseQuery("select NON EMPTY {[Measures].[RSCP]} ON COLUMNS," + "NON EMPTY Hierarchize(Union(Union(Union(Union(Union(Union({[Time].[All Time]}, [Time].[All Time].Children), [Time].[2011].Children), [Time].[2011].[03].Children), [Time].[2011].[03].[31].Children), [Time].[2011].[03].[31].[15].Children), [Time].[2011].[03].[31].[15].[12].Children)) ON ROWS" +" from [CS_3G]"+ " where [Cell].[280]"); Result result = connection.execute(query); result.print(new PrintWriter(System.out,true)); } } public static void main (String[] args){ new connect().requete(); } }
Mon problème est dans le format de la réponse car j'ai besoin de récupérer la liste des mesures (RSCP), ainsi que la liste des temps (time), pour pouvoir dessiner un linechart : RSCP en fonction de time.Axis #0:
{[Cell].[280]}
Axis #1:
{[Measures].[RSCP]}
Axis #2:
{[Time].[All Time]}
{[Time].[2011]}
{[Time].[2011].[03]}
{[Time].[2011].[03].[31]}
{[Time].[2011].[03].[31].[15]}
{[Time].[2011].[03].[31].[15].[12]}
{[Time].[2011].[03].[31].[15].[12].[16.711]}
{[Time].[2011].[03].[31].[15].[12].[17.793]}
{[Time].[2011].[03].[31].[15].[12].[17.994]}
{[Time].[2011].[03].[31].[15].[12].[18.232]}
{[Time].[2011].[03].[31].[15].[12].[18.652]}
{[Time].[2011].[03].[31].[15].[12].[18.872]}
{[Time].[2011].[03].[31].[15].[12].[19.312]}
{[Time].[2011].[03].[31].[15].[12].[19.736]}
{[Time].[2011].[03].[31].[15].[12].[19.952]}
{[Time].[2011].[03].[31].[15].[12].[20.156]}
{[Time].[2011].[03].[31].[15].[12].[20.392]}
{[Time].[2011].[03].[31].[15].[12].[20.812]}
{[Time].[2011].[03].[31].[15].[12].[21.031]}
{[Time].[2011].[03].[31].[15].[12].[21.253]}
{[Time].[2011].[03].[31].[15].[12].[21.472]}
{[Time].[2011].[03].[31].[15].[12].[22.113]}
{[Time].[2011].[03].[31].[15].[12].[22.316]}
{[Time].[2011].[03].[31].[15].[12].[24.054]}
{[Time].[2011].[03].[31].[15].[12].[24.934]}
{[Time].[2011].[03].[31].[15].[12].[25.574]}
{[Time].[2011].[03].[31].[15].[12].[25.793]}
{[Time].[2011].[03].[31].[15].[12].[26.014]}
{[Time].[2011].[03].[31].[15].[12].[26.873]}
{[Time].[2011].[03].[31].[15].[12].[27.094]}
{[Time].[2011].[03].[31].[15].[12].[27.293]}
{[Time].[2011].[03].[31].[15].[12].[27.513]}
{[Time].[2011].[03].[31].[15].[12].[27.713]}
{[Time].[2011].[03].[31].[15].[12].[27.953]}
{[Time].[2011].[03].[31].[15].[12].[30.273]}
{[Time].[2011].[03].[31].[15].[12].[31.374]}
{[Time].[2011].[03].[31].[15].[12].[31.596]}
{[Time].[2011].[03].[31].[15].[12].[31.814]}
{[Time].[2011].[03].[31].[15].[12].[32.016]}
{[Time].[2011].[03].[31].[15].[12].[32.233]}
{[Time].[2011].[03].[31].[15].[12].[32.434]}
{[Time].[2011].[03].[31].[15].[12].[32.633]}
{[Time].[2011].[03].[31].[15].[12].[32.854]}
{[Time].[2011].[03].[31].[15].[12].[33.093]}
{[Time].[2011].[03].[31].[15].[12].[33.314]}
{[Time].[2011].[03].[31].[15].[12].[33.756]}
{[Time].[2011].[03].[31].[15].[12].[33.974]}
{[Time].[2011].[03].[31].[15].[12].[36.854]}
Row #0: -65.748
Row #1: -65.748
Row #2: -65.748
Row #3: -65.748
Row #4: -65.748
Row #5: -65.748
Row #6: -73.1
Row #7: -67.3
Row #8: -67.6
Row #9: -65.7
Row #10: -65.1
Row #11: -63.2
...
result.print(new PrintWriter(System.out,true)) ne me permet pas de récupérer la liste des time ou mesures.
Quelqu'un saurait-il m'expliquer comment faire ?
Merci d'avance pour votre aide.





Répondre avec citation
Partager