Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1529 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [RESOLU] Problème Requête Mondrian/JPivot

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] Problème Requête Mondrian/JPivot

n°2001651
lezert
Posté le 15-06-2010 à 09:29:28  profilanswer
 

Bonjour,
 
Je suis entrain de développer une application en JAVA/J2EE avec du Mondrian/ JPivot mais j'ai quelques soucis de prise en compte des modifications dans la base de données.
 
Je m'explique:
 
Je lance l'application et je consulte par exemple des statistiques pour une date données.
Cependant si je rajoute des valeurs pour cette date dans la base de données et que j'actualise  
ma page elles ne sont pas prise en compte.
 
En gros si je consulte une date et que je rajoute des infos en bd pour une date consulté les modification pour cette date ne sont pas prise en compte mais je peux voir les modification pour les dates non visualisé avec l'application.
 
Voici un exemple de requête:
 

Code :
  1. with member [DATE].[Periode] as Aggregate([DATE].[Dates].[<%=debAnnee%>].[<%=debMois%>].[<%=debSem%>].[<%=debJour %>] : [DATE].[Dates].[<%=finAnnee%>].[<%=finMois%>].[<%=finSem%>].[<%=finJour %>])
  2. select  crossjoin( {[DATE].[Periode]},
  3.                    union({[TTTT_JJ].[Total]},[TTTT_JJ].[Total].children))  ON COLUMNS,
  4.        {[Measures].[Duree], [Measures].[longueur],[Measures].[nb]} ON ROWS
  5. from [Data]
  6. where [Objet].[Objets].[<%=objet%>]


 
 
Le seul moyen de pouvoir voir les modifications pour la date est de redeployer l'application !!!!
 
Je ne trouve pas du tout de solution à mon problème malgrès tout le temps que j'y passe plusieurs jours déjà...
 
Merci d'avance pour votre aide....


Message édité par lezert le 15-06-2010 à 13:48:33
mood
Publicité
Posté le 15-06-2010 à 09:29:28  profilanswer
 

n°2001686
lasnoufle
La seule et unique!
Posté le 15-06-2010 à 10:21:29  profilanswer
 

Salut

 

Je connais pas du tout ton truc là, Mondrian/JPivot, mais ton problème m'a l'air d'etre un bete problème de cache.
Google donne ca: http://forums.pentaho.org/showthread.php?t=55902
Deux solutions proposées sur la page, et si elles marchent pas ya quand meme un gros aiguillage sur la source du problème...

 

Edit: et tiens voilà du boudin: http://forums.pentaho.org/showthread.php?t=51518


Message édité par lasnoufle le 15-06-2010 à 10:23:56

---------------
C'était vraiment très intéressant.
n°2001744
lezert
Posté le 15-06-2010 à 11:23:38  profilanswer
 

Merci pour ta réponse, tu ma vraiment bien fait avancé...  
Je suis entrein de cherche comment vider ce fameux cache mondrian...
Mais si quelqu'un sait comment le vider ce fameux cache je suis preneur car j'ai essayé pas mal de truc pour le moment mais rien à faire !!!

n°2001761
lasnoufle
La seule et unique!
Posté le 15-06-2010 à 11:53:42  profilanswer
 

T'as essayé ca, donné dans le premier lien? -> mondrian.rolap.cache.CachePool.instance().flush();
Fais ca juste avant le chargement de ton truc JPivot.
 
Ton appli est construite comment? Tu dis que c'est Java/J2EE mais tu parles aussi de redéploiement, c'est une appli web? Ton bidule JPivot il est appelé/montré ou? Dans une page web, ou sur du Swing?


---------------
C'était vraiment très intéressant.
n°2001764
lezert
Posté le 15-06-2010 à 12:06:22  profilanswer
 

lasnoufle a écrit :

T'as essayé ca, donné dans le premier lien? -> mondrian.rolap.cache.CachePool.instance().flush();
Fais ca juste avant le chargement de ton truc JPivot.
 
Ton appli est construite comment? Tu dis que c'est Java/J2EE mais tu parles aussi de redéploiement, c'est une appli web? Ton bidule JPivot il est appelé/montré ou? Dans une page web, ou sur du Swing?


 
 
Bonjour,
 
Oui il s'agit bien d'une application Web déployé sur JBoss avec du JSF pour l'IHM et utilisation de JPivot...
Mes requêtes JPivot sont dans une page JSP. Cependant d'après ce que j'ai compris grâce à ton lien, c'est que quand je réactualise la page les requêtes sont bien réexécuté mais avec des données en cache (Cache de Mondrian). Ainsi lors d'appel de requêtes similaire si j'ai bien compris il va chercher la réponse dans le cache...
 
J'ai alors essayé: mondrian.rolap.cache.CachePool.instance().flush();  
mais la méthode flush n'existe pas... D'après ce que j'ai compiris sur Internet elle était déprecated et donc elle a du être supprimer...
 
Je suis entrain de cherche sur internet comment faire pour vider ce fameux cache avant chacune de mes requêtes par exemple....
 
Mais bon, il est vrai qu'il n'y a a pas trop d'information sur tout ça !!!!
 
++
 
Maxime
 

n°2001776
lasnoufle
La seule et unique!
Posté le 15-06-2010 à 12:29:04  profilanswer
 

Ah OK, bon, une méthode n'est (quasiment) jamais déclarée deprecated sans que rien ne soit mis en place pour la remplacer, et généralement le remplacement est "meilleur".
 
Bon, je suppose que t'as trouvé ca: http://mondrian.pentaho.org/api/mo [...] ntrol.html
En gros, avec le second lien que j'ai filé au début, je dirais que tu peux tenter un truc du genre:

[pour chaque table que tu as modifié en dans la BD (je pense que c'est ce qui est dans le "from" de ta requete mais je connais pas du tout la syntaxe, donc tu sauras mieux que moi)]
 
Cube tableARafrachir = connection.getSchema().lookupCube("Data", true);
CacheControl.CellRegion regionARafraichir = cacheControl.createMemberRegion(tableARafrachir);
cacheControl.flush(regionARafraichir);

Après la page dis pas comment cacheControl est créé mais tu sauras ca mieux que moi.


---------------
C'était vraiment très intéressant.
n°2001811
lezert
Posté le 15-06-2010 à 13:47:59  profilanswer
 

Je viens de résoudre mon problème...
 
Au début de chaque appel de ma page jsp, je fais:
 
<%
// Je vide le Cache Mondrian
java.util.Iterator<mondrian.rolap.RolapSchema> schemaIterator = mondrian.rolap.RolapSchema.getRolapSchemas();
while(schemaIterator.hasNext()){
mondrian.rolap.RolapSchema schema = schemaIterator.next();
mondrian.olap.CacheControl cacheControl = schema.getInternalConnection().getCacheControl(null);
cacheControl.flushSchemaCache();
}
%>  
 
Ce qui me permets de vider le cache et le recharger à chaque nouvelle requête !!!!!
 
Merci beaucoup pour ton aide lasnoufle !!!!!  
Tu m'a beaucoup aidé, je pense ques sans toit j'y serais encore....

n°2001822
lasnoufle
La seule et unique!
Posté le 15-06-2010 à 13:59:09  profilanswer
 

J't'en prie.
 
Par contre, meme si ca marche, d'après la doc, c'est pas du tout optimisé (en gros tu balourdes la totalité du cache, incluant la metadata des tables, à chaque fois). Bon, tant que t'as pas de problèmes de performance visibles je suppose que c'est pas un problème, si jamais ca commence à ramer tu sais ou creuser...
 
A+


---------------
C'était vraiment très intéressant.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [RESOLU] Problème Requête Mondrian/JPivot

 

Sujets relatifs
Requete Serveur WGETProblème avec une entrée de tache.
[RESOLU]document.getElementById() = null mais pourquoi ??Problème d'accent
Problème accéder l'élement DOM (parsing html)Problème code PHP insertion données form dans DB
Problème d'utilisation de DSN avec socket (PHP &PEAR)problème javascript
ASM Gros problème :"(Problème rechercher et remplacer sous Access
Plus de sujets relatifs à : [RESOLU] Problème Requête Mondrian/JPivot


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR