|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : novembre 2004 Messages : 67 ![]() |
Hello tous,
J'ai 2 indicateurs sur une même table de fait. Ils ont tous les deux des clauses Where différentes. Si je prends les 2 dans un même rapport, il y en aura donc un des deux qui sera faux, voire les deux vu que les deux clauses vont s'additionner. Il y a quoi comme solution en dehors de : 1/ contextes différents (en aliasant la tablde fait) qui forçeront la génération de 2 ordres SQL 2/ faire 2 fournisseurs de données (un sur chaque indicateur) dans le rapport. 3/ remonter les critères du where dans le select en faisant une somme conditionnelle (sum(case when ...) ... plus risqué pour les perfs. NB : l'option d'univers 'plusieurs SQL pour chaque indicateurs' ne marche pas pour ce pbm là car on est dans la même table de fait (cf. doc). Merci d'avance + |
|
|
00
|
|
|
#2 | ||
![]() ![]() Bruno ROMAN-RUIZ Inscription : décembre 2006 Messages : 2 181 ![]() |
Salut,
Je choisirais la réponse 3. Un univers avec des clauses where dans le sql des objets ... est un univers mal fait ! (même si BO le propose) Un gars de chez BO m'a mis le pied à l'étrier pour mon premier univers et d'entrée de jeu m'a filé cette règle. Je l'ai adoptée et ne l'ai jamais regrété même pas en termes de perf. De deux choses l'une :
Code :
Une autre solution si on avait le même objet sans clause where aucune serait dans BO d'utiliser Code :
=<mavariable> Où (<Dimension> = "Critère")
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!" |
||
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Inscription : novembre 2004 Messages : 67 ![]() |
Merci pour cette réponse.
En plus Oracle à un optimiseur tellement puissant que finalement ça change peut-être pas grand chose. Je regarderai les plans d'execution pour vérifier ... Par contre je comprends pas bien ta dernière phrase ?!? + |
|
|
00
|
|
|
#4 |
![]() ![]() Bruno ROMAN-RUIZ Inscription : décembre 2006 Messages : 2 181 ![]() |
Bonjour,
Au sujet de ma dernière phrase ... Je me demandais pourquoi avoir deux objets différents portant sur un même champ d'une même table (si j'ai bien compris) et ne se différenciant que par des clauses where quand on a besoin d'afficher les deux informations côte à côte. Imaginons un seul objet indicateur dépourvu de clause where ... Exemple au lieu de deux objets objet1 <nb de points des Bleus> défini par le sql suivant SELECT LEMATCH.PTS WHERE LEMATCH.EQUIPE = 'BLEUS" objet2 <nb de points des Blacks> défini par le sql suivant SELECT LEMATCH.PTS WHERE LEMATCH.EQUIPE = BLACKS" un objet indicateur unique sans clause where <nb points> SELECT LEMATCH.PTS et un objet Dimension <Equipe> SELECT LEMATCH.EQUIPE L'utilisateur BO peut alors faire une requête basée sur les objets <Date du match> <Equipe> <nb points> avec en condition <Date du match> = 06/10/2007 il obtient un tableau : Date du match Equipe nb points 06/10/2007 Blacks 3 06/10/2007 Blacks 5 06/10/2007 Blacks 2 06/10/2007 Blacks 3 06/10/2007 Bleus 3 06/10/2007 Bleus 3 06/10/2007 Bleus 5 06/10/2007 Blacks 2 06/10/2007 Bleus 5 06/10/2007 Bleus 2 Si on enlève du tableau la dimension Equipe on obtient Date du match nb points 06/10/2007 38 Si maintenant on ajoute une colonne à droite de celle du nb de points et que dans ces deux colonnes on modifie la formule de la façon suivante <nb points> Où (<Equipe> = "Bleus") que lon peut nommer en variable Nous <nb points> Où (<Equipe> = "Blacks") que lon peut nommer en variable Eux On obtient le tableau Date du match Nous Eux 06/10/2007 20 18 Ce qui me fait dire que un seul objet sans clause where suffit pour afficher ensemble ces deux résultats Bien entendu un simple tableau croisé affiche le même résultat. La méthode ci dessus est utile lorsque l'on veut faire des calculs différents sur les colonnes de valeurs obtenues Exemple Dépenses 2006 x 1,02 et Dépenses 2007 / 9mois X 12 mois Le tableau croisé ne permet pas de le faire
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!" |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com