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

Informatica Discussion :

Ordre d'execution des objets


Sujet :

Informatica

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Points : 6
    Points
    6
    Par défaut Ordre d'execution des objets
    Bonjour,

    J'ai un update et un insert dans une table mais je veux faire passer l'update en premier (je veux mettre à jour un champ puis le réinsérer avec un autre code), hors informatica execute l'insert d'abord.
    Dans le load plan, on ne peut changer l'ordre que pour les SQs.

    I'm wating from a solution

  2. #2
    Membre régulier
    Inscrit en
    Décembre 2003
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 89
    Points : 96
    Points
    96
    Par défaut
    fait deux mappings differents et ordonnance tes sessions

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 12
    Points : 15
    Points
    15
    Par défaut
    Met deux Update Strategy, le premier DD_UPDATE et l'autre DD_INSERT avec éventuellement une expression qui change la valeur entre les deux
    http://www.starnetasso.fr.st
    http://www.multimania.com/xxkarlkoxxx

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    avez-vous trouvé une solution ?

    j'ai exactement la même problématique :
    j'ai un routeur qui a en sortie :
    un Update strategy en UPDATE
    et
    un Update strategy en INSERT.

    Le Pb c'est qu'informatica semble suivre un ordre aléatoire en sortie,
    alors que je souhaiterais faire l'UPDATE puis l'INSERT.

  5. #5
    Inactif  

    Homme Profil pro
    Freelance EURL / Business Intelligence ETL
    Inscrit en
    Avril 2005
    Messages
    5 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance EURL / Business Intelligence ETL
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2005
    Messages : 5 879
    Points : 26 147
    Points
    26 147
    Billets dans le blog
    3
    Par défaut
    Sur un mapping donné, tu peux consulter et modifier l'ordre dans lequel les targets (même s'il s'agit de la même) sont insérés.

    mappings -> target load plan.
    - So.... what exactly is preventing us from doing this?
    - Geometry.
    - Just ignore it !!
    ****
    "The longer he lived, the more he realized that nothing was simple and little was true" A clash of Kings, George R. R. Martin.
    ***
    Quand arrivera l'apocalypse, il restera deux types d'entreprise : les pompes funèbres et les cabinets d'audit. - zecreator, 21/05/2019

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 86
    Points : 68
    Points
    68
    Par défaut
    Merci beaucoup de ton info Glutinus, je pense qu'elle pourrait bien m'aider pour certains mappings : demander la mise à jour d'abord, puis l'insertion en cas de non correspondance.
    Cependant, dans mapping => target load plan, les flèches haut et bas sont en grisées ne me laissant pas la possibilité justement de demander l'exécution du dd_update et de la target qui va avec AVANT l'ordre existant c'est à dire dd_insert et target associée.
    Comment faire pour que ces 2 boutons de flèches passent en noir et donc en actif ?

  7. #7
    Inactif  

    Homme Profil pro
    Freelance EURL / Business Intelligence ETL
    Inscrit en
    Avril 2005
    Messages
    5 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance EURL / Business Intelligence ETL
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2005
    Messages : 5 879
    Points : 26 147
    Points
    26 147
    Billets dans le blog
    3
    Par défaut
    En fait ma réponse n'est pas complètement bonne...
    Le target load plan permet de choisir dans quel ordre on charge depuis les source qualifiers... autrement dit, c'est une bonne méthode si on a plein de "petits mappings" à l'intérieur du mapping...

    La solution, pour par exemple les cibles multiples pour une source unique, si jamais la cible est sur une base relationnelle (et pas du fichier), consisterait à vérifier les "constraint-based loading", pour ce point je n'ai pas trop le temps de regarder, il faudrait consulter l'aide Informatica.
    - So.... what exactly is preventing us from doing this?
    - Geometry.
    - Just ignore it !!
    ****
    "The longer he lived, the more he realized that nothing was simple and little was true" A clash of Kings, George R. R. Martin.
    ***
    Quand arrivera l'apocalypse, il restera deux types d'entreprise : les pompes funèbres et les cabinets d'audit. - zecreator, 21/05/2019

  8. #8
    Inactif  

    Homme Profil pro
    Freelance EURL / Business Intelligence ETL
    Inscrit en
    Avril 2005
    Messages
    5 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance EURL / Business Intelligence ETL
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2005
    Messages : 5 879
    Points : 26 147
    Points
    26 147
    Billets dans le blog
    3
    Par défaut
    Après relecture de l'aide, effectivement le gros conseil que donne informatica est de "spliter le mapping en deux si on veut absolument avoir un ordre particulier à faire"...

    La logique pourrait consister donc à faire deux mappings, l'un par exemple de faire l'update, puis le second pour faire les insertions. Cela peut changer la logique et réduire le temps de traitement.

    Pour ma part, j'utilise un système de tables temporaires (travaillant avec des cibles Oracle), mais bon cela peut varier selon le besoin de chacun.

    On peut par exemple, avec une seule source, insérer des lignes dans une table "INSER_matable", insérer des lignes dans une table "UPD_matable". Un second mapping réinsère toutes les lignes dans la table finale (en la truncatant) depuis "INSER_matable", puis faire ensuite un update depuis la table "UPD_matable". Mais bon, cela peut être utile et plutôt efficace dans des cas de datamart par exemple, mais dans un datawarehouse où il ne faut surtout pas supprimer une seule ligne, ça peut être chaud...

    Stéphanie (et autres) => il y a une option "update else insert" que tu peux cocher dans tes targets. Il faut par contre que ta source soit en "update". Je ne l'utilise jamais, mais tu pourrais essayer... Fais gaffe, parce que ta source sera alors en update, donc toutes tes cibles doivent être traitées en update... si ton mapping est complexe (plusieurs sources, plusieurs cibles), ce n'est peut-être pas la bonne solution.
    - So.... what exactly is preventing us from doing this?
    - Geometry.
    - Just ignore it !!
    ****
    "The longer he lived, the more he realized that nothing was simple and little was true" A clash of Kings, George R. R. Martin.
    ***
    Quand arrivera l'apocalypse, il restera deux types d'entreprise : les pompes funèbres et les cabinets d'audit. - zecreator, 21/05/2019

  9. #9
    Membre habitué
    Homme Profil pro
    consultant ETL
    Inscrit en
    Septembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : consultant ETL
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2008
    Messages : 97
    Points : 185
    Points
    185
    Par défaut numérotation
    je propose de mettre un port integer avec numerotation 1 ou 2 suivant que c est un update ou un insert.
    puis de trier avant d envoyer ca dans la target.

  10. #10
    Membre actif Avatar de funckfot
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 221
    Points : 211
    Points
    211
    Par défaut
    Citation Envoyé par galgal Voir le message
    Bonjour,
    Le Pb c'est qu'informatica semble suivre un ordre aléatoire en sortie,
    alors que je souhaiterais faire l'UPDATE puis l'INSERT.
    Ce n'est pas il semblerait mais c'est simplement sûr. Power center suit un ordre aléatoire sur les ordres SQL. On est obligé de "splitter" le mapping comme le dit Glutinus. on peut alors créer au sein du mapping des "pipelines" qui sont des flux de données distinct.

    Pour info : le target load plan permet d'ordonnancer les "pipelines".

    Le seul moyen d'obtenir l'UPDATE puis l'INSERT et de le découper ton mapping
    en son sein tu peux :
    1er pipeline : sélectionner les enregistrements et tu effectue l'UPDATE.
    2eme pipeline : tu re-sélectionnes tes enregistrements misent en Update et tu finis par effectuer tes INSERT.

    Mais la solution de qqcvd semble plus simple. A vérifier qu'il effectue toujours dans un ordre séquentiel (ce qui est en théorie le cas).
    Rod

  11. #11
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2010
    Messages : 73
    Points : 93
    Points
    93
    Par défaut
    Bonjour,

    Effectivement, j'ai déjà rencontré ce problème également. La solution est de découper ton mapping en deux mapping différents. Un sera chargé de faire l'insertion et l'autre l'update. A chaque mapping une session et dans un workflow tu ordonnance les 2 sessions avec une condition de passage de l'une à l'autre si le code retour de l'exécution de la première est 0.

    Avec ça ton problème est résolu

  12. #12
    Membre actif Avatar de funckfot
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 221
    Points : 211
    Points
    211
    Par défaut
    Citation Envoyé par alexisongagna Voir le message
    Bonjour,

    Effectivement, j'ai déjà rencontré ce problème également. La solution est de découper ton mapping en deux mapping différents. Un sera chargé de faire l'insertion et l'autre l'update. A chaque mapping une session et dans un workflow tu ordonnance les 2 sessions avec une condition de passage de l'une à l'autre si le code retour de l'exécution de la première est 0.

    Avec ça ton problème est résolu

    Mais pk faire 2 sessions? 2 pipelines dans le même mapping suffit amplement!
    Rod

  13. #13
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2010
    Messages : 73
    Points : 93
    Points
    93
    Par défaut
    Bonjour,
    Pk 2 sessions ? Parce qu'une norme de développement me le contraint. Norme propre au client.

  14. #14
    Membre actif Avatar de funckfot
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 221
    Points : 211
    Points
    211
    Par défaut
    Citation Envoyé par alexisongagna Voir le message
    Bonjour,
    Pk 2 sessions ? Parce qu'une norme de développement me le contraint. Norme propre au client.
    ok, je me demandais si vous connaissiez le terme de pipeline.
    mais pk tu ne proposes pas directement l'autre solution, qui me semble bien plus pratique.
    de toute façon, je pense qu'elle a sa réponse...
    Rod

Discussions similaires

  1. definir un ordre d'execution des objets talend
    Par pekre dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 30/04/2015, 16h50
  2. Ordre d'execution des filtres d'un dataset
    Par ubititi dans le forum BIRT
    Réponses: 3
    Dernier message: 01/10/2009, 17h34
  3. [javascript] ordre d'execution des functions ?
    Par gretch dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/08/2009, 15h51
  4. Ordre d'execution des tables
    Par zoom61 dans le forum SQL
    Réponses: 7
    Dernier message: 25/02/2009, 15h27
  5. Réponses: 3
    Dernier message: 14/12/2007, 09h04

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