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]Doublons sur des millions de ligne


Sujet :

SSIS

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut [SSIS]Doublons sur des millions de ligne
    Bonjour,

    Depuis le temps que je travaille avec SSIS, je commence à désespérer.
    et pour cause, je suis chargée de la construction d'une solution télécom et je dois traiter presque un milliards de lignes.
    j'ai des fichiers de 5 millions de lignes que je charge dans 4 tables (une par trimestre) on va les appeler Tab_T1, Tab_T2, Tab_T3 ... , le hic est qu'il y'a des doublons dans chaque trimestre contenant près de 350 millions de lignes.

    les performances de SSIS ne sont pas au RDV pour traiter ce genre de problémes.

    j'ai testé plusieurs scénarios:

    1. une contrainte de clé primaire sur les champs qui devraient être uniques:
    très très très lent. il alloue beaucoup trop de place mémoire pour le faire.
    2. une contrainte de clé unique avec Unique NonClustred, ça passe mieux mais ralenti au fur et à mesure du chargement et ça reste encore très lent.
    3. Enlever les doublons via une requête sur des tranches de 5 jour ( pour diviser le bloc de volumétrie à traiter) ---> Trop trop trop lent.

    SVP connaissez vous des astuces pour traiter les doublons sur une très grosse volumétrie via SSIS.

    Merci d'avance de venir à mon se cours et bonne journée à tous.

  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 MeriConsult,

    Je te propose de visionner le webcast "SQL Server intégration services 2005" que tu trouveras sur ce lien.

    On y explique comment y détecter (et supprimer) les doublons.

    Reste bien sûr à l'adapter à ton cas particulier.

    Personnellement, j'ai pas encore testé cette méthode mais d'après ce qu'on voit ça marche

    Voilà en espérant t'avoir aidé

  3. #3
    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 : 39
    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
    Bonjour,

    D'où proviennent tes données? D'un SGBD? Si c'est le cas as tu essayé de mettre un distinct dans l'écriture de ta requête pour la sélection des sources?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 269
    Points : 339
    Points
    339
    Par défaut
    Personnellement, je pense que ce genre de problème ne doit pas forcément être traité par SSIS mais plutôt par du code SQL.

    J'imagine qu'avec tel volume de données, le serveur qui fait tourner le SQL Server doit être balèze et donc, il faut tirer parti de cette puissance...

    Dans ce cas, la solution suivante peut être implémentée (je l'ai déjà fait):

    * insérer tes données brut dans une table de travail en utilisant un bulk insert (pas forcément en ssis de nouveau)
    * calculer un hash ou checksum pour chaque ligne et l'insérer dans une colonne supplémentaire de ta table
    * utiliser une autre colonne de type bit pour checker les duplicate et spécifier sa valeur via une requete sql de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    with cte as
    (
         détection de duplicate grâce à un select group by ton hash having count(*) > 1
    )
    update ta_table set IsDuplicate = 1from cte where ...
    * transférer les non duplicate dans ta table finale
    * transférer une seule occurence des duplicate dans ta table finale via un select distinct


    Bon maintenant, peut être que l'utilisation d'une table temporaire de travail peut te poser problème (vu les volumes)...

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut merci pour vôtre aide
    et pour répondre à vos questions,

    voilà, mes données proviennent de fichiers bruts. et je passe actuellement par une procédure transact sql pour dédoublonner par tranche de chaque jour mais c'est trop long.

    j'ai aussi une idée, insérer les données dans une table brut partitionnée à la semaine du mois et dédoublonner sur chaque partition --> ça reste à tester

    et c'est quoi un hash ou checksum pour chaque ligne psychokwax.

    Merci pour toutes vos réponses

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 269
    Points : 339
    Points
    339
    Par défaut
    C'est une valeur calculée à partir de colonnes d'une ligne.
    Elle est sensée être identique pour des lignes contenant les mêmes données.

Discussions similaires

  1. Réponses: 10
    Dernier message: 09/03/2012, 12h04
  2. Réponses: 4
    Dernier message: 24/02/2008, 22h16
  3. [SELECT sur 16 millions de lignes] délai très grand
    Par localhost dans le forum Requêtes
    Réponses: 6
    Dernier message: 22/11/2004, 18h04
  4. Réponses: 2
    Dernier message: 19/08/2003, 19h04
  5. Zoom sur des vecteurs ou lignes
    Par mat.M dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 25/11/2002, 11h40

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