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

SSIS Discussion :

[SSIS][2k5] Comment faire un UPDATE ?


Sujet :

SSIS

  1. #1
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut [SSIS][2k5] Comment faire un UPDATE ?
    Bonjour,

    Je débute avec SSIS, et j'ai un peu du mal à retrouver mes petits...

    J'arrive bien à alimenter mes tables par des nouvelles lignes, mais je ne vois pas comment on peut alimenter en UPDATE ?

    Pour être plus concret : mettons que j'aie une table avec une clé sur trois colonnes et deux colonnes d'indicateurs. Une première alimentation crée les lignes et renseigne le premier indicateur. Pour le second indicateur, je voudrais créer un autre dataflow, qui vienne compléter les lignes existantes.

    Le must serait évidemment de pouvoir faire un "INSERT si ça n'existe pas, UPDATE si ça existe"...

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 82
    Points : 80
    Points
    80
    Par défaut
    Bonjour Antoun,

    Comme je viens de le mentionner à mochi, il existe une méthode très pratique et performante qui s'appelle UPSERT (association de UPDATE + INSERT) qui répond parfaitement à ta demande.

    Plus d'infos sur ce lien.

    Voilà bon courage

  3. #3
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    Merci, cela répond effectivement à mon besoin. Toutefois, je m'interroge sur le fait que pour la partie UPDATE, la solution préconisée soit de faire une commande SQL... il n'y a rien de plus graphique ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 82
    Points : 80
    Points
    80
    Par défaut
    Non, pas à ma connaissance en tous cas.

    Pour ce qui est du composant "Commande OLE DB" et hormis le fait qu'il faille renseigner la requête SQL d'UPDATE, je trouve que c'est majoritairement du graphique que l'on fait vu que par la suite faudra faire un mapping entre les paramètres (renseignés par un "?" dans la requête) et les colonnes présentes dans le flux d'entrée.

    Voilà bon courage

  5. #5
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    Merci pour tout !

    Je laisse ce topic non-résolu qq jours au cas où quelqu'un souhaiterait proposer une autre solution.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 82
    Points : 80
    Points
    80
    Par défaut
    Bonjour,

    Il existe bien une autre solution à savoir la "Dimension à variation lente" ou "Slowly Changing Dimension" qui est un composant facilement configurable et assez exhaustif.

    Le seul bémol dans tout ceci est que la performance n'est pas au rendez-vous malheureusement.

    Et comme en Business Intelligence, on traite des volumes de données assez conséquents (pouvant atteindre l'ordre du Téra-octet), on ne peut pas vraiment se le permettre (et c'est pourquoi je n'ai pas proposé cette solution hier ).

    Microsoft a semble-t-il (je n'ai pas encore eu l'occasion de tester) fait des efforts dans ce sens avec SSIS 2008 en nous proposant le composant connu sous le nom de CDC.

    Attendons voir...

    Bonne journée

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    En fait, je n'ai pas regardé cette solution car la table concernée est une table de faits et non une dimension... mais j'imagine que la SCD peut être détournée sans trop de pb pour traiter une table de faits ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 82
    Points : 80
    Points
    80
    Par défaut
    Je vais me permettre de jouer un peu sur les mots.

    Certes, le composant se nomme SCDimension donc on pense qu'il fait référence à une dimension et non à une table de fait.

    Sauf, que dans le lexique de SSIS, les mots "dimension" et "fait" ne devraient pas exister vu qu'ils font référence à un format multidimensionnel --> cube --> SSAS.

    Donc, disons que sous SSIS, ca marche sans poser de problèmes (sauf de conscience professionnelle ) mais avec ce que cela implique comme performance moyenne.

  9. #9
    Membre éclairé
    Avatar de patriceharel
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 466
    Points : 884
    Points
    884
    Par défaut
    Citation Envoyé par Sam3oul Voir le message
    les mots "dimension" et "fait" ne devraient pas exister vu qu'ils font référence à un format multidimensionnel
    J'ai pas compris cette remarque!! Je dirais au contraire que schéma multidimensionnel implique fait(s) et dimensions!! Non?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 82
    Points : 80
    Points
    80
    Par défaut
    Bonjour patriceharel,

    Je suis tout à fait d'accord avec toi.

    Mais j'ai dit et je cite :

    "Sauf, que dans le lexique de SSIS, les mots "dimension" et "fait" ne devraient pas exister vu qu'ils font référence à un format multidimensionnel --> cube --> SSAS."

    Autrement dit, sous le datawarehouse (ou datamart), on est encore sous un schéma de type relationnel (même si celui ci est, dans ce cas, dénormalisé).

    Les tables de faits et dimensions sont évoquées à partir de SSAS.

  11. #11
    Membre éclairé
    Avatar de patriceharel
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 466
    Points : 884
    Points
    884
    Par défaut
    D'accord, j'avais mal compris la phrase...

    Mais en tous les cas je pense qu'il ne faut pas attendre l'utilisation des cubes pour parler de dimensions ou faits... le datawarehouse est bâti sur ces notions. D'ailleurs l'utilisation des cubes n'est pas obligatoire lors de la constitution d'un datawarehouse (même s'il est vrai qu'ils sont souvent associés à ce dernier).
    SSIS utilise à pleine mesure ces notions car les faits et dimensions constituent les cibles finales de ses processus.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Octobre 2008
    Messages : 41
    Points : 38
    Points
    38
    Par défaut
    Bonjour
    Wi t'a raison patriceharel mais sam3oul veut dire qu'au niveau SSIS on ne distingue pas entre Dimension et Faits on ne parle de ça qu'au niveau SSAS. C'est à dire au niveau de SSIS par exemple on ne trouve pas des composants relatifs au traitement des dimensions et d'autres relatifs au faits (C'est bien ça Sam3oul non ?). Pour le composant Slowly Changing Dimension (c'est le composant qui fait l'exeption où on parle de dimension) il est déconseillé de l'utiliser avec des données qui dépassent les 100 milles or les faits généralement dépassent ce seuil.
    A mon avis il n'y a pas autre méthode pour faire les "UPSERT" dans SSIS 2005, j'ai déjà pensé à jouer sur la config de la sortie d'erreur du composant de Destination mais ça n'a pas l'air "propre" en plus c'est destiné pour les developpeurs ... (d'après Sam3oul ) ..
    Je pense que je vait voir DataStage
    A++

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 82
    Points : 80
    Points
    80
    Par défaut
    Bonjour mochi,

    Tu as assez bien résumé ce que je pensais, du moins dans la première partie de ta réponse.

    Pour ce qui est de "jouer sur la config de la sortie d'erreur du composant de Destination mais ça n'a pas l'air "propre" en plus c'est destiné pour les developpeurs ... (d'après Sam3oul ) ..", je t'ai fait part (dans un autre post) de mon opinion sur cette méthode en disant que les sorties d'erreurs des composants sources et cibles étaient à mon humble avis plus destinées à traiter les cas d'échec d'exécution du package SSIS que la redirection des flux de données.

    Pour ce qui est du terme "développeur" que j'ai mis entre guillemets, apparemment ca a été interprété comme étant un terme péjoratif donc je vais l'enlever sur le champ. (Le fait est que je ne sais pas vraiment comment on appelle la personne qui implémente une solution décisionnelle vu que ca ne s'apparente pas vraiment à du développement classique).

    Voilà, bon courage

  14. #14
    Membre éclairé
    Avatar de patriceharel
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 466
    Points : 884
    Points
    884
    Par défaut
    Ok, autant pour moi, je comprend le point de vue de Sam3oul... ce n'est pas qu'on ne distingue pas Fait et Dimension sous SSIS, c'est que l'on se contente d'alimenter des tables et que l'on ne les qualifie pas de la sorte...

    En ce qui concerne l'utilisation des lookups pour les mises à jour des lignes, Microsoft a remédié à l'ambiguïté de l'utilisation de la sortie d'erreur pour les redirections dans SSIS 2008. Les lookups disposent maintenant de la "sortie avec correspondance", de la"sortie sans correspondance" et de la sortie d'erreur. A nous ensuite de paramétrer le lookup pour que les lignes sans correspondance mettent soit le composant en échec soit qu'elles sortent sur la "sortie sans correspondance".


  15. #15
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut UPSERT
    Bonjour, avec SSIS (SQL Server 2008), il est tout à fait possible de faire l'UPDATE INSERT avec le composant lookup (Recherche). En utilisant la première sortie pour l'update (sortie avec correspondance) et la seconde sortie pour l'insert (sortie sans correspondance). N'utilisez pas la sortie d'erreur (c'est une méthode qui marche surement mais n'est pas propre).

    @tte

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/07/2009, 11h37
  2. Comment faire l'Update
    Par andy38 dans le forum VBA Access
    Réponses: 1
    Dernier message: 03/02/2007, 11h51
  3. Réponses: 1
    Dernier message: 07/09/2006, 16h03
  4. comment faire ce update svp?
    Par iam dans le forum Bases de données
    Réponses: 6
    Dernier message: 03/07/2006, 13h56
  5. [VB6] Comment faire un update sur des textbox qui sont créés
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 27
    Dernier message: 16/02/2006, 14h52

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