Bonjour,
Je cherche a realiser une requete qui vas me dire pour les membres d'un axe combien j'ai d'elements dans un autre axe par un toppercent
Fonctionnellement j'arrive a avoir mon resultat avec un membre calculé :
evidement j'ai pas mal de membres dans DIM1 ce qui rend le resultat assez long...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 with member measures.counttop80 as 'count(crossjoin( {[DIM1].[DIM1].currentmember}, TopPercent( nonempty( [DIM2].[DIM2].[Level 03].Members, [Measures].[Amount] ), 80, [Measures].[Amount] )
J'ai fait un test simple pour avoir le resultat hors comptage et la surprise c'est hyper rapide :
si je selectionne le set j'ai bien pour chaque membre de dim1 (au niveau le plus fin) les elements de DIM2 qui font le 80%
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 With SET SET_Top80 as 'generate( nonempty([dim1].[dim1].[Level 05].members,[Measures].[Amount]), crossjoin( {[DIM1].[Dim1].currentmember}, TopPercent( nonempty( [DIM2].[DIM2].[Level 03].Members, [Measures].[Amount] ), 80, [Measures].[Amount] ) ))'
Dans mon jeux de données actuel la requete avec le set prend 2sec et celle sur le membre calculé prend 1 minute
Celle qui prend 2 seconde me renvoie 3734 lignes, celle qui prend 1 minute renvoie 876 ligne (avec une mesure qui si je l'agrège fait bien 3734 donc fonctionnellement c'est bon)
1/je ne comprend pas trop la différence de perf, peut etre la clef est le generate qui ne vas pas travailler comme le membre calculé qui liui vas faire une requête par element...
2/est il possible qu'a partir du set je puisse avoir mon resultat final?je ne sais pas comment agréger le set pour avoir les membres de DIM1 et le count des membres de DIM2
3/j'ai fait un serveur lié pour faire une requête SQL par dessus la requête MDX avec un simple group by et je m'en sors a 4secondes, j'aimerais avoir le meme temps de réponses en mdx pur
En espérant avoir été clair
Nicolas
Partager