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

Développement de jobs Discussion :

Probleme de filtre


Sujet :

Développement de jobs

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 37
    Par défaut Probleme de filtre
    Salut à tous,

    Je dois modeliser une requete un peu barbare de type (simplifée car faisant quelques lignes...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Insert into Table0 ([...]) 
    SELECT [...] 
    FROM Table1 Inner join Table2 on Table1.val = Table2.id
    WHERE ( (Table2.code="X") or (Table2.code="Y") or (Table2.code Like "Z*") )
    Sachant que la Table1 est en fait un fichier csv plein a craquer, la Table2 est dans Access, et le tout doit être inseré dans la Table0, qui est la version Acess du fichier csv. (En résumé, je rempli Table0 avec les données de Table1 filtrées en fonction de valeurs de Table2)

    Je m'y prends je pense d'une manière un peu "McGyver"... en fait je prend le ficher csv Table1, que je joins à Table2 via un tMap, dont la sortie va vers un tFilterRow, pour l'instant relié vers un tLogRow... (Dans l'avenir je pense remettre un tMap pour exclure les champ de la Table2 qui ne peuvent pas aller dans Access suivi d'un AccessOutput)

    Mon problème actuellement est que je n'arrrive pas à exprimer le 'Like "Z*" ' de la requete sql via le filter, même en passant par des expression regulieres...

    Autre petite question... à terme, avant 'reset' de la base prod (qui est sauvegardée puis déchargée tous les ans), le fichier csv contient plus de 12 millions de lignes... A votre avis le système que j'ai fait est-il viable?


    EDIT: j'ai mis en PJ un screen du job
    Images attachées Images attachées  

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 247
    Par défaut
    Bonjour,

    Pourquoi tu ne mets pas tes conditions dans ton composant Access directement ?
    Ensuite, dans le tMap, tu imposes la référence à ton lookup et le tour est joué. Pour être plus clair, sur ton lien en sortie, tu vas te retrouver avec une condition de ce type :
    Dans tous les cas, je pense que tu peux enlever ton tFilterRoww, et mettre tes conditions directement dans le tMap, ce qui sera moins couteux en ressources.

    Bonne continuation.
    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 37
    Par défaut
    Bon je ne sais pas si j'ai tout compris de ce que tu as dis (je suis pas encore trop au point avec les histoires de look-up etc..) , enfin ce que j'ai fais donc comme tu as dis, les conditions dans la requete du AccessInput, et dans le tMap, sur le Input en lookup, j'ai mis en plus de la jointure, 'toutes les correspondances'...
    A priori comme ça, ça fonctionne... à un détail près qui m'étonne beaucoup: les conditions like ne sont pas prises en compte dans le where... Après tests, si j'execute et la selection sur la table access, ainsi que la requete que j'ai énoncée plus haut, en omettant les like, j'ai le résultat fourni par Talend!

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 247
    Par défaut
    Je reconnais que ça fait bien longtemps que je n'ai pas fait d'Access... Donc peut être que je vais dire une bêtise, mais ça ne serait pas un '%' et non pas une '*' qu'il faudrait dans ton LIKE ?

    En général, en SQL, le caractère "joker" c'est le '%' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ... FROM ... WHERE Colonne LIKE 'leDebut%'

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 37
    Par défaut
    uep pas con j'y avais pas pensé sur le coup (rude ce WE! ), mais t'as pitet bien raison!

    en fait je recopie 'bêtement' des requetes fournies qui fonctionnent via access, mais peut-être moins bien sur Talend! je teste ça de suite!

    EDIT: miam effectivement beaucoup mieux! je vais me flageller de suite pour pas y avoir pensé plus tôt! Bon me reste plus qu'a voir pour les perfs! Car là ça va le fichier est tronqué, j'ai mis 154s pour faire 65535 lignes et vitesse en chute constante, mais à voir ce que ça donne pour 2millions, puis 12 par la suite !

Discussions similaires

  1. Probleme de filtre avec fonction Dlookup sur champ texte
    Par Piloupilou999 dans le forum Access
    Réponses: 5
    Dernier message: 27/01/2007, 22h41
  2. Probleme de filtre
    Par technopole dans le forum Access
    Réponses: 4
    Dernier message: 14/09/2006, 14h11
  3. Probleme sur filtre sur formulaire
    Par christ-94 dans le forum IHM
    Réponses: 8
    Dernier message: 09/06/2006, 11h39
  4. probleme de filtre de formulaire
    Par avantoux dans le forum Access
    Réponses: 1
    Dernier message: 19/01/2006, 15h02
  5. Probleme de filtre dans bdd
    Par scorpiwolf dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/06/2002, 10h43

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