Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Cognos
Cognos Forum d'entraide Cognos : Impromptu, Powerplay, transformer,...
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 16/11/2007, 09h05   #1
Membre confirmé
 
Inscription : juillet 2005
Messages : 402
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 402
Points : 269
Points : 269
Par défaut [Impromptu 7] Faire un import d'une table avec un équivalent de clause WHERE ?

Bonjour.

J'aimerais importer 2 fois la même table dans mon catalogue afin d'en séparer le contenu.
Par exemple, à partir d'une table PAIEMENT, j'aimerais avoir dans le catalogue PAIEMENT_CHEQUE et PAIEMENT_CB.

Ce que j'ai fait : importer cette table sous le pseudo PAIEMENT_CHEQUE, et dans les Profiles Utilisateurs, j'ajoute un filtre sur cette table : Type_paiement='CHEQUE'. Et rebelotte avec les CB.

Mon problème, c'est que je dois faire des jointures externes sur ces tables, du type :
SELECT .... from FACTURE F LEFT OUTER JOIN PAIEMENT_CHEQUE C on F.ID=C.Fact_ID
Or avec le filtre dans mes profiles, Impromptu ajoute Type_paiement='CHEQUE' dans la clause where. Ce qui exclu évidemment les factures non payées par chèque. (l'intérêt d'une telle requête est certe discutable, mais ce n'est qu'un exemple )

2ème technique testée : la table est importée sous le pseudo PAIEMENT_CHEQUE, et je définis manuellement la jointure externe avec FACTURE de la manière suivante:
F.ID=C.Fact_ID et C.Type_paiement='CHEQUE'

Or la requête créée par Impromptu est :
select ... from FACTURE F left outer join PAIEMENT_CHEQUE C
on F.ID=C.Fact_ID and 'CHEQUE'=C.Type_paiement


au lieu de
select ... from FACTURE F left outer join PAIEMENT_CHEQUE C
on F.ID=C.Fact_ID and C.Type_paiement='CHEQUE'


Et donc, ça ne résout en rien le problème.

3ème méthode testée :
je déclare ma jointure externe de la manière suivante :
F.ID=DECODE(C.Type_paiement;'CHEQUE';C.Fact_ID;null)

Et là ça marche, mais au niveau de la base de données, je perds l'utilisation de l'index sur Fact_ID...

Autre remarque : avec ces 2 dernières méthodes, je suis obligé d'ajouter dans les profiles utilisateurs :
F.Fact_ID n'est pas manquant

comme filtre sur ma table PAIEMENT_CHEQUE. Pas très classe, mais bon, si c'est la seule solution...

Le plus simple pour moi serait de créer une vue au niveau de la base de données (create view PAIEMENT_CHEQUE as select * from PAIEMENT where Type_paiement='CHEQUE'), mais je n'ai pas totalement la main sur la base, et on me demande de faire du "tout cognos"...
Donc je ne vois plus trop quoi faire... Il est tout à fait possible que quelque chose m'ait échappé dans la doc d'Impromptu, mais c'est pas faute d'avoir cherché...

Merci d'avance pour vos suggestions !
marchand_de_sable 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 10h55.


 
 
 
 
Partenaires

Hébergement Web