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 :

Alimenter par différentiel une table


Sujet :

SSIS

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Points : 50
    Points
    50
    Par défaut Alimenter par différentiel une table
    Bonjour à tous,

    Je débute sous SSIS , je travaille sous Sql Server 2008 et je rencontre un petit soucis:

    Je souhaite alimenter une table de référence par delta (en différentiel).
    Les tables sources dans mon système de production n'ont pas de date, c'est donc un problème majeur...

    J'ai réalisé la 1ère alimentation en bloc ..

    J'aimerai maintenant faire du delta , j'ai lu qu'on pouvait utiliser le composant CDC spiltter dans sqlserver 2008 mais je ne sais pas comment l'exploiter , quelqu'un l'a t-il utilisé ?
    Merci par avance

  2. #2
    Membre habitué
    Femme Profil pro
    Consultante BI
    Inscrit en
    Mars 2011
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultante BI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 236
    Points : 191
    Points
    191
    Par défaut
    Bonjour ,

    CDC:Change Data Capture est un nouveau composant dans sql server 2012
    Vous avez SQL SERVER 2008 alors vous pouvez pas utiliser CDC

    source : http://www.mattmasson.com/index.php/...server-2012-2/

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Points : 26
    Points
    26
    Par défaut
    Si tu veux juste insérer le delta, tu peux utiliser le composant Lookup

  4. #4
    Membre chevronné Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Points : 2 145
    Points
    2 145
    Par défaut
    Attention, Les options de Change Data Capture sont à activer sur le système source. Cad votre base de données de production.

    Cette fonctionnalité est disponible depuis SQL Server 2008 (R2 ?). Elle permet alors de tracer les modifications de données sur les tables/colonnes sélectionnées d'une base.

    Ensuite, la récupération de ces données se fait, de base, par des vues et fonctions système.

    La ""seule"" nouveautée de SQL 2012 est d'amiéliorer, aujouter des vues, mais surtout d'avoir développé un composant SSIS qui soit capable de les utiliser.


    Bref,
    Si votre système source est en SQL 2008 vous pouvez activer l'option.
    Puis, si votre SSIS est en 208, vous faites l'alimentation en interrogeant manuellement les vues.
    , sinon, si votre SSIS est en 2012 (tout en conservant les BDD en 2008), vous pouvez utiliser le nouveau composant.
    Alexandre Chemla - Consultant MS BI chez Masao

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Points : 50
    Points
    50
    Par défaut
    Merci pour le lien mais je n'arrive pas à faire le parallèle avec les composants de sqlserver 2008.

    par exemple le composant CDC Control Task , je n'arrive pas à savoir lequel dans la boite à outils .


    merci

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Points : 50
    Points
    50
    Par défaut
    Merci à tous ,

    j'ai lu après avoir posté mon message la répones de Jinroh77 , l'option est active dans la base source.
    , si j'ai bien compris il n'exise pas de composant CDC dans sqlserver 2008 , vous parlez d'interroger les vues pour l'alimentation , je ne vois pas comment faire , pouvez vous me donner des pistes ?

    j'ai besoin des trois commandes insert update et delete , y a t-il un autre moyen de le réaliser?

    Merci

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Points : 50
    Points
    50
    Par défaut
    Merci pour le lien mais je n'arrive pas à faire le parallèle avec les composants de sqlserver 2008.

    par exemple le composant CDC Control Task , je n'arrive pas à savoir lequel dans la boite à outils .


    merci

  8. #8
    Membre confirmé Avatar de dream_rachid
    Homme Profil pro
    DBA & Responsable BI
    Inscrit en
    Mars 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Tunisie

    Informations professionnelles :
    Activité : DBA & Responsable BI
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2006
    Messages : 278
    Points : 474
    Points
    474
    Par défaut
    le sujet est déjà bien discuté dans mon poste :

    http://www.developpez.net/forums/d97...d-ssis-2008-a/

    à mon niveau je préfère passer par un STG database et procéder avec des jointure avec le DWH database pour déterminer les données à mettre à jour

    Bien à vous

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Points : 50
    Points
    50
    Par défaut Change Data Capture
    Bonjour ,

    je reviens vers vous toujours sur le sujet du CDC dans SSIS , j'ai avancé depuis hier , j'ai opté pour l'utilisation du CDC au niveau de la base de données.

    j'ai suivi une documentation qui explique bien les étapes à respecter pour alimenter les tables de dimensions avec differentiel.

    le réalisation aurait été simple si ma table de dimension contenait les données provenant d'une seule table source , ce n'est pas le cas car ma table de dimension est la joiture de plusieurs tables sources, d'ou ma question :
    sur les variables à déclarer au niveau de mon package intial:
    j'ai une variable INT_SOURCE_TAB qui recupère le nom de la table source qui permet d'alimenter la dim , que j'initialise avec la valeur égale au nom de la table soure. la deuxième variable est GETDATA qui contient l'odre sql qui récupère les champs à inserer dans la DIM.
    je ne sais pas comment faire dans mon cas car j'ai plusieurs tables sources .
    est ce que je peux mettre plusieurs valeurs séparées par une virgule dans le champs Value?

    Merci par avance


    Merci

  10. #10
    Membre confirmé Avatar de dream_rachid
    Homme Profil pro
    DBA & Responsable BI
    Inscrit en
    Mars 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Tunisie

    Informations professionnelles :
    Activité : DBA & Responsable BI
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2006
    Messages : 278
    Points : 474
    Points
    474
    Par défaut
    Salut ;
    Est ce que ta table de dimension est trop volumineuse ?
    Si ce n'est pas le cas pourquoi tu n'utilises pas la composant "Slowly changing dimension" ?

  11. #11
    Membre chevronné Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Points : 2 145
    Points
    2 145
    Par défaut
    Citation Envoyé par dream_rachid Voir le message
    Salut ;
    Est ce que ta table de dimension est trop volumineuse ?
    Si ce n'est pas le cas pourquoi tu n'utilises pas la composant "Slowly changing dimension" ?
    ... ou son équivalent moins lent.
    Alexandre Chemla - Consultant MS BI chez Masao

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Points : 50
    Points
    50
    Par défaut
    Salut à tous ,

    pour repondre à votre question , ma table n'est pas volumineuse elle a 3044 lignes , j'ai d'autres tables qui font 167000 lignes?

    pour ma première table , j'ai essayé ce que vous m'avez suggéré , je me retrouve avec trois sorties
    1 _ Nouvelle sortie (insert)
    2 mise à jour des attributs valides (update)
    3 mise à jour des attributs déduits ( est ce cette option veut dire les elements supprimes de la source ?)
    je n'ai pas saisi cette 3 eme option , car c'est la commande update utilisée dans la 2 sortie .

    Si des matricules sont supprimer à la sources , je veux pouvoir les identifier pour les supprimer avant d'alimenter le table DIM

    merci par avance

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Points : 50
    Points
    50
    Par défaut Kimball Method Slowly Changing Dimension
    Bonjour Jinroh77


    Merci pour le lien , il correspond à ce que je veux obtenir comme resulat , seulement je n'arrive pas a editer le composant "Kimball Method Slowly Changing Dimensionpour voir son contenu , j'ai un message d'erreur :

    «*Impossible de mettre à niveau les métadonnées du composant de «*composant «*Kimball Method Slowly Changing Dimension*» (593)*» vers la nouvelle version. Échec de la méthode PerformUpgrade"
    j'ai la version 2008 version 9.0.30729

    auriez vous le contenu de ce composant , qu'a t-il de particulier?
    merci

  14. #14
    Membre chevronné Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Points : 2 145
    Points
    2 145
    Par défaut
    Avez-vous récupéré la version du composant qui correspond à votre de SSIS ?
    Le message d'upgrade semble indiqué que vous essayez une mise à jour du package ??

    Sinon, le principe de ce composant est identique au SCD proposé en natif dans les packages SSIS. Il est simplement pus performant. il a donc le même résultat que le natif, avec par contre un paramètrage plus poussé, un poil plus compliqué également.
    Essayez peut-être déjà avec le SCD pour tester le principe sur votre petite table, puis essayez ensuite celui de Kimball sur votre table plus volumineuse.
    Alexandre Chemla - Consultant MS BI chez Masao

  15. #15
    Membre confirmé Avatar de dream_rachid
    Homme Profil pro
    DBA & Responsable BI
    Inscrit en
    Mars 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Tunisie

    Informations professionnelles :
    Activité : DBA & Responsable BI
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2006
    Messages : 278
    Points : 474
    Points
    474
    Par défaut
    Citation Envoyé par nabou Voir le message
    ma table n'est pas volumineuse elle a 3044 lignes
    SSIS pourra traiter ces données en quelques secondes , je suggères que tu utilise le SCD

    Citation Envoyé par nabou Voir le message
    Si des matricules sont supprimer à la sources , je veux pouvoir les identifier pour les supprimer avant d'alimenter le table DIM
    le SCD ne traite pas les lignes à supprimer , pour se faire il suffit de :
    1-passer par une table temporaire (située dans une base à part "Staging Area")
    2- faire une jointure avec les données du DWH pour récupérer les lignes à supprimer
    3- utilise le SCD pour mettre à jour le DWH avec les données en Insert et en update

    j'espère que ces recommandations pourrons résoudre ton problème

    ================================
    Bien à toi
    Rachid

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Points : 50
    Points
    50
    Par défaut SCD
    Bonjour à tous ,

    Merci à tous les deux Rachid et Jinroh77 , je testerez la solution suggérée par Rachid elle me parrait plus simple acr je suis novice dans SSIS

    Bon week end à tous

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 126
    Points : 50
    Points
    50
    Par défaut SCD
    Bonjour Rachid,

    je reviens vers vous pour m'eclairer sur la table dbo.Staging à utiliser pour stocker les enregistrements à supprimer.
    je l'ai créée dans une base à part comme suggéré,mais je ne suis pas sûre du reste.
    cette table à la meme structure que ma Table DIM_DESTINATION
    SDC donne trois sorties:
    à la première j'ai un Destination LOE DB (insert )
    à la dexième j'ai une commande OLEDB dans laquelle j'ai le update de la table de destination

    la troisième sortie mise à jour des attributs déduits ( c'est le composant OLEDB Commande avec la commande update c'est la meme contenu que la sortie update)
    ma question est :
    comment remplir cette table dbo.Staging et à quel moment ?
    a quelle sortie du composant faut-il la relier et à quel moment faut -il vider la table de dimension
    ci-joint le flux .

    Meci pour votre aide.
    Fichiers attachés Fichiers attachés

  18. #18
    Membre confirmé Avatar de dream_rachid
    Homme Profil pro
    DBA & Responsable BI
    Inscrit en
    Mars 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Tunisie

    Informations professionnelles :
    Activité : DBA & Responsable BI
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2006
    Messages : 278
    Points : 474
    Points
    474
    Par défaut
    Bonjour ;

    Pour répondre à ton besoin il suffit de suivre les étapes suivantes :

    0- Créer une table Staging_Destination identique à celle du DWH
    1- Suppression de la table temporaire dans la base Staging Area
    2- Alimenter cette dernière avec toutes les données des tables sources
    3- Utiliser la table temporaire comme input pour le SCD
    PS: tu peux très simplement désactiver la sortie de mise à jour de membre déduit dans la propriété du SCD. ( désactiver la case à cocher dans le dernier onglet)
    4- pour supprimer les lignes de la table DWH_Destination je te propose trois solutions

    a- Requête DELETE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    BEGIN TRAN
     
    DELETE [DWH].[dbo].[DESTINATION] 
    FROM [DWH].[dbo].[DESTINATION]  DWH
    LEFT OUTER JOIN  [STG].[dbo].[[DESTINATION] STG
    ON                      [DWH].[PK] = [STG].[PK] 
    WHERE [STG].[PK] IS  NULL
     
     
    COMMIT
    GO

    b- Requête MERGE (si tu es en SQLSERVER 2008)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    MERGE [DWH].[dbo].[DESTINATION]  AS DWH
    USING  [DWH].[dbo].[DESTINATION] AS STG
    ON  DWH.[PK] = STG.[PK] 
     
    WHEN NOT MATCHED BY SOURCE 
     
    THEN DELETE  ;
    c - Utiliser le composant lookup pour détecter les lignes à supprimer et ajouter comme sortie un composant OLEDB Command


    Bien à toi
    Rachid

Discussions similaires

  1. Alimentation automatique d'une table
    Par bstevy dans le forum Oracle
    Réponses: 2
    Dernier message: 22/04/2015, 11h48
  2. Réponses: 0
    Dernier message: 16/12/2011, 16h08
  3. Alimentation d'une table par une autre
    Par Atojul dans le forum SAS Base
    Réponses: 2
    Dernier message: 11/06/2008, 15h30
  4. Réponses: 2
    Dernier message: 29/03/2007, 11h47
  5. trier un stringgrid alimenter par une table MySql
    Par boopix dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/03/2007, 14h28

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