Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Business Objects > Designer
Designer Forum d'entraide Designer (création d'univers, etc.)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/10/2011, 15h39   #1
Invité de passage
 
Inscription : novembre 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 4
Points : 0
Points : 0
Par défaut N'appliquer les conditions qu'après exécution de la requête

Bonjour,

J'ai un problème qui me creuse la tête depuis des jours et des jours. Je ne sais pas s'il y a une solution et si cette solution se fait à travers Designer ou Deski/Webi donc je poste dans le forum Designer, désolé si ce n'est pas le bon endroit.

Alors je vais essayer d'être clair pour vous exposer mon problème.

- J'ai une table de dimension qui répertorie tous les contrats.
- J'ai quatre tables de fait qui répertorient différentes activités des contrats (montants)
- Certaines de ces tables de fait ont plusieurs occurences par contrat.
- Tous les contrats ne se retrouvent pas forcément dans toutes les tables de fait.

J'ai donc relié la table de dimension contrat avec les 4 tables de fait par des jointures externes.

Mon problème intervient lorsque j'interroge une table de fait qui a plusieurs occurences du contrat et une autre table de fait
En effet, les lignes se retrouvent "multipliées" par le nombre d'occurence et les sommes ainsi calculées sont fausses.

Exemple pour être clair :

Table contrat : 1 ligne
Table de fait A : 1 ligne, montant = 100
Table de fait B : 2 lignes, montant = 200 et montant = 300

Une requête sur ce contrat donne deux lignes :

contrat, 100, 200
contrat, 100, 300

==> Le résultat après agrégation donne contrat, 200, 500 au lieu de contrat, 100, 500

Pour remédier à ce problème, je suis passé par l'option du Designer : "Plusieurs instructions SQL pour chaque indicateur".
==> Les sommes sont faites séparément en deux requêtes, le résultat est alors correct. BO liant en quelque sorte sur la dimension contrat de lui-même.

A ce moment-là intervient un autre problème.
Si je pose une condition sur le montant, ex : montant2 > 1000, BO me renvoie quand même la ligne !

Résultat : contrat, 100, (null)

La condition n'est appliquée par BO que sur la deuxième requête qui ne renvoie aucun résultat. Mais la première requête, elle, renvoie bien la ligne puis BO lie les deux requêtes sur la dimension.
Le résultat n'est donc pas celui attendu par l'utilisateur.

Ma question est donc : Comment faire pour que la condition ne soit appliquée qu'après exécution de la requête ? (comme un filtre global) Ou comment appliquer la condition sur l'ensemble des requêtes ?
J'ai essayé pas mal de choses comme les paramètres du Designer mais rien n'y fait... si quelqu'un a une petite idée, ce serait vraiment gentil...

Merci beaucoup
jomakay est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 11h37   #2
Modérateur
 
Avatar de djam21
 
Homme
Consultant en Business Intelligence
Inscription : janvier 2006
Messages : 560
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Luxembourg

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Finance

Informations forums :
Inscription : janvier 2006
Messages : 560
Points : 862
Points : 862
Envoyer un message via Skype™ à djam21
Plutôt que de filtrer ta requête, filtre ton rapport...

Tu ramènes tout puis tu appliques un filtre sur l'onglet...
djam21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 15h00   #3
Invité de passage
 
Inscription : novembre 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 4
Points : 0
Points : 0
Merci djam21 de ta réponse.

J'avais effectivement pensé à cette solution mais je cherchais à mettre çà en place pour un utilisateur lambda qui crée sa requête.

L'utilisation "logique" de BO est de mettre la condition dans la requête...
jomakay est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 17h56   #4
Membre Expert
 
Femme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 480
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Ain (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 480
Points : 1 024
Points : 1 024
Bonjour,
Autre solution : faire une requête par table de fait...
tedo01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 17h07   #5
Invité de passage
 
Inscription : novembre 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 4
Points : 0
Points : 0
Oui, c'est ce que j'ai fait en cochant la case "Plusieurs instructions SQL pour chaque indicateur".

Mais à ce moment-là, la condition ne s'applique que sur une des requêtes et pas sur l'ensemble des requêtes.

En cherchant j'ai trouvé une piste à mon problème.
Les tables de fait reliées comme je l'ai décrit est appelé pour BO "Interruption de séquences".

Si quelqu'un s'y connait donc en interruption de séquences, çà m'intéresse. J'ai trouvé la définition sur le forum déjà : http://business-intelligence.develop...page=II-B#C-10

Ainsi que dans la doc BO. Mais c'est après qu'intervient le problème, la condition ne s'applique que sur une des sous-requêtes ainsi générées et non pas sur l'ensemble.
jomakay est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 17h10   #6
Membre Expert
 
Femme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 480
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Ain (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 480
Points : 1 024
Points : 1 024
Bonjour,
Ce n'est pas ça que je propose.
Ma solution consisterait en autant de fournisseur de données que de tables de faits...
tedo01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 17h21   #7
Responsable Business Intelligence
 
Avatar de TomDuBouchon
 
Homme Thomas Cochin
Consultant en Business Intelligence
Inscription : juin 2009
Messages : 3 281
Détails du profil
Informations personnelles :
Nom : Homme Thomas Cochin
Âge : 29
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : juin 2009
Messages : 3 281
Points : 5 703
Points : 5 703
Bonjour,

Le problème se situe surtout sur l'implémentation d'une ventilation non-cohérente après exécution des requêtes...

Pour être plus clair, que vous passiez par des contextes (interruption), par une instruction pour chaque indicateur reviendra au même. Je vous donne un exemple :

Requête 1 :
Client | Ancienneté
toto | 6

Requête 2 :
Client | N° commande | Prix
toto | 1001 | 30
toto | 1002 | 50

Si on a plusieurs requêtes ou des contextes ou une instruction par indicateur, le résultat reviendra à ce qu'il y a ci-dessus. (qui est logique)

Le problème intervient lors de la création du tableau :

Si on ne met pas la dimension N° Commande :
Client | Ancienneté | Prix
toto | 6 | 80

... ici le résultat est correct. Or ci on ajoute la dimension N° Commande :
Client | Ancienneté | N° Commande | Prix
toto | 6 | 1001 | 30
toto | 6 | 1002 | 50

... Dans ce cas, la somme de pied de page donnera :
toto | 12 | - | 80

... Ce qui évidemment est faux.

Donc, pour résoudre le problème, deux solutions :
Concernant vos filtres, je vous conseille de créer une requête par table de faits comme le conseille tedo, et d'appliquer les filtres sur chacune d'entre elles (quitte à passer par une sous-requête si besoin est)
__________________
Pensez à consulter les FAQs BI, les Tutoriels BI et à effectuer des Recherches.
Un message vous a aidé ? Votez en cliquant sur
Votre problème est résolu ? Merci de l'indiquer en cliquant sur le bouton
Vous souhaitez contribuer à la rubrique BI ? Contactez-moi ou un autre responsable de l'équipe BI par MP.
TomDuBouchon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 10h40   #8
Invité de passage
 
Inscription : novembre 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 4
Points : 0
Points : 0
Merci pour vos réponses.

tedo : d'accord je n'avais pas compris ce que vous vouliez dire.

tom : cela confirme bien ce que je pensais. pour un utilisateur lambda de l'univers, il n'y a pas de solution pour avoir une utilisation "classique" du requêtage (une seule requête avec les conditions appliquées sur cette même requête, sans ajouter de filtres après requête).

Merci encore
jomakay est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 11h18   #9
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 13
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 13
Points : 11
Points : 11
J'ai déjà eu ce type de problème :
Pour le résoudre j'avais été obligé d'utiliser une ruse :

J'ai créé 1 fournisseur par indicateur.
J'ai ajouté des Informations différentes dans les fournisseurs de données (si il n'y a pas d'information alors en créer une).
Dans les rapports j'ai ensuite créé un filtre dynamique pour ne voir que les données dont les deux informations sont renseignées.
C'est pas TOP mais bon, il n'y a pas toujours le choix.
Poulppy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h02.


 
 
 
 
Partenaires

Hébergement Web