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 :

Décomposition d'un job


Sujet :

Développement de jobs

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 29
    Points : 22
    Points
    22
    Par défaut Décomposition d'un job
    Bonjour,
    J'ai un travail à réaliser et j'ai besoin de votre aide comme toujours .. En fait ils m'ont donnée un job qui n'est pas très compliqué, mais il contient une requête trèèèèès longue.. elle est écrite sur des centaines de lignes et elle utilise plusieurs tables.. Il m'ont demandé de décomposer cette requete en sous jobs.. Bien sur jusqu'à maintenant je ne sais pas comment faire.. Aidez moi si vous avez d'idée et merci d'avance

  2. #2
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par tulipe_rose Voir le message
    Bonjour,
    J'ai un travail à réaliser et j'ai besoin de votre aide comme toujours .. En fait ils m'ont donnée un job qui n'est pas très compliqué, mais il contient une requête trèèèèès longue.. elle est écrite sur des centaines de lignes et elle utilise plusieurs tables.. Il m'ont demandé de décomposer cette requete en sous jobs.. Bien sur jusqu'à maintenant je ne sais pas comment faire.. Aidez moi si vous avez d'idée et merci d'avance

    Je pense que l'idée est de ne plus déléguer les jointures aux SGBD mais à un tMap.


    Si tu as ce genre de requête :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT TABLE_1.CHAMPS_1, TABLE_1.CHAMPS_2,... TABLE_1.CHAMPS_X  , TABLE_2.CHAMPS_1,...  TABLE_N.CHAMPS_Y
    FROM TABLE_1 INNER JOIN TABLE_2 ON (COND_1)
            ...
            INNER JOIN TABLE_N.CHAMPS_M  (COND_(N-1))

    Il faut la décomposé en N requête du type dont toutes les sortie se rejoigne dans un tMap
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT TABLE_i.CHAMPS_1, ... SELECT TABLE_i.CHAMPS_x
    FROM  TABLE_i
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 29
    Points : 22
    Points
    22
    Par défaut
    D'abord merci pour votre réponse ,
    c'est presque la structure que vous proposiez celle de ma requête mais avec plusieurs "Left Join" au lieu de "Inner Join" avec une clause "Where" à la fin.. Je ne sais pas exactement si ca sera la même chose ou pas..

  4. #4
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut
    Pensez a réutiliser les éléments de la clause where dans vos nouvelles requetes afin de limiter la volumétrie que vous ramenez.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 29
    Points : 22
    Points
    22
    Par défaut
    Merci beaucoup bstevy ,
    J'ai juste un petit problème concernant les jointures, est ce que ca sera mieux de les réaliser au niveau d'un tMap ou les laisser directement dans les requetes (càd dans les t..Input).

  6. #6
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    L'idéee de bstevy est que les conditions de jointure doivent être dans le tMap.
    Et les conditions de filtrages sur les tables doivent être dans le requêttes.
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 29
    Points : 22
    Points
    22
    Par défaut
    Merci supergeoffrey,
    Je veux juste savoir quelle est la méthode la plus optimale coté performance.. parce que je souvient que j'ai lu un jour une intervention qui dit que l'utilisation de la jointure directement dans le "t..input" est plus optimal que la réalisation des jointures dans tMap.. est ce que c'est vraiment vrai?

  8. #8
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut
    D'une manière général, la base de donnée est prévue pour faire des jointures et a la possibilité d'utiliser des index notament.
    Si vous faites vos jointure avec le tmap, il va falloir d'abord trier les données pour pouvoir les joindre, ce qui est extrememnt couteux.

    De plus, un inner join aura tendance à limiter la volumétrie que vous ramènerez si les critères de jointure sont correctement effectué. Alors qu'avec le tmap, vous allez devoir tout ramener avant de "filtrer" via la condition de jointure.


    Donc oui, c'est plus performant de faire ca dans l'input.
    Maintenant, reste à savoir jusqu'ou vous voulez décomposer. Si c'est vraiment tout passer en talend, il faut faire vos jointures en tmap.
    Si vous n'avez pas de raison de décomposer en talend, alors restez avec votre grosse requete, ca sera sans doute plus efficace que de passer par talend.

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 29
    Points : 22
    Points
    22
    Par défaut
    Merci encore une fois pour la clarification, c'est très intéressant..
    Bref la requete énorme dont je parle est de la forme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT Table.champ, REQ_1.CHAMPS_1, REQ_1.CHAMPS_2,... REQ_1.CHAMPS_X  , REQ_2.CHAMPS_1,...  REQ_N.CHAMPS_Y
    FROM 
            Left Join REQ_1 ON (COND_1)
            LEFT JOIN REQ_2 ON (COND_2)
            ...
            Left JOIN REQ_N.CHAMPS_M  (COND_N)
     
    WHERE ...
    avec REQ_i est une requete.
    est ce que c optimal de mettre dans chaque sous requete:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT REQ_i.champ_1, REQ_i.champ_2...
    FROM table LEFT Join (Clause de REQ_i) AS REQ_i ON (COND_i)
    WHERE.....
    Merci d'avance

  10. #10
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    L'optimal est de faire comme tu le faisait avant.

    Après si tu souhaites avoir un compromis entre performance et maintenabilité, tu peux très bien faire un mix des deux.
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

Discussions similaires

  1. Décomposition d'une chaine de caractères
    Par stephdiplo150 dans le forum C
    Réponses: 3
    Dernier message: 04/03/2004, 23h50
  2. Récupérer le nom du fichier spool correspondant à un job
    Par chtiot dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 23/02/2004, 21h28
  3. Infos jobs
    Par Colargole dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/12/2003, 12h09
  4. Etre notifié de l'ajout d'un job dans le spooler
    Par chtiot dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 12/11/2003, 22h52
  5. Décomposition RGB
    Par Claythest dans le forum Langage
    Réponses: 3
    Dernier message: 16/06/2003, 12h35

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