IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

BODI Discussion :

Lookup_ext


Sujet :

BODI

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Points : 22
    Points
    22
    Par défaut Lookup_ext
    Bonjour, j'ai un filtre/validation a mettre en place. La condition est simple, si je devais faire une jointure, je ferais un :

    maquery.id_cpt = matable.id_cpt and matable.type = 'T'.

    Ma table, c'est une source de donnée, ma query, c'est la query précédente dans le data flow que je souhaite filtrer.

    Mon problème, c'est que "matable" est très volumineuse (plusieurs millions de tuples), et on dirait que body plante dans la jointure. Or, il n'y a que quelques milliers de ligne dans "maquery". Donc je préférerais non pas mettre en place une jointure, mais une "fonction" qui procède ligne par ligne dans maquery et qui vérifierait l’existence de la ligne dans matable avec le bon type.

    Je sais faire une validation qui vérifie l’existence et met en place une fonction lookup qui ressemble à ca:
    lookup_ext([schema.schema1.matable,'PRE_LOAD_CACHE','MAX'], [id_cpt], [NULL], [ID_cpt,'=', maquery.ID_id_cpt]) IS NOT NULL

    mais j'ai pas trop d'idée sur comment ajouter la clause/condition qui permet de comparer le type = "T".

    Merci pour le coup de main.

  2. #2
    Membre du Club
    Inscrit en
    Juin 2002
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 39
    Points : 46
    Points
    46
    Par défaut utilisation de lookup
    Bonjour

    dans ton cas l'utilisation de lookup me semble pas être une bonne idée.
    je pencherais pour la solution d'une jointure avec l'utilisation de data transfert pour déporter la charge de traitement siur le moteur de la base de donnée pour ne pas saturer DI
    tu peux aussi créer une table temporaire pour stocker ta query
    et surtout ne pas oublier les index

  3. #3
    Membre habitué
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2004
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2004
    Messages : 131
    Points : 187
    Points
    187
    Par défaut
    hello,

    tu peux faire comme ça:
    lookup_ext([schema.schema1.matable,'PRE_LOAD_CACHE','MAX'], [id_cpt], [NULL], [matable.type, '=' ,'T',ID_cpt,'=', maquery.ID_id_cpt]) IS NOT NULL

    le filtre est dans ce cas là appliqué au lookup, et donc "poussé" sur le moteur bdd.

    C'est une bonne solution!

    ++

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo