Optimiser ses ETL sous SSIS



Une des étapes la plus importantes dans un projet décisionnel, c’est le traitement et le chargement des données qui se font via des processus ETL (Extract, Transorm, Load).

Sous Microsoft SQL Server Integration Services, ce processus est réalisé grâce aux différentes tâches fournies : sources de données, Tâches de traitement et de transformation et Destination de données.

Généralement, lorsqu’on commence la réalisation des ETL, on ne prend pas en considération le temps consommé pour charger les données depuis la source vers la destination. Mais, on s’intéresse beaucoup plus à la cohérence de données, et leur qualité. C’est pourquoi, on remarque que parfois on manipule des ETL très grands et très lourds.

Ce processus sera composé de plusieurs tâches : de Recherche, des conversions de données, d’expressions, de calcul, union… toutes ces taches sont consommatrices.

Mais une fois les soucis de qualité et de cohérence de données sont réglés ; et les données répondent correctement aux besoins de clients, on commence à revoir l’aspect durée de chargement et complexité de traitement.

Les ingénieurs doivent penser à optimiser leurs ETLs pour gagner en temps et en ressources. Dans ce qui suit, nous vous présentons quelques règles et bonnes pratiques à suivre lors de l’optimisation :
      
      1.      Toutes les transformations qu’on pourra faire avec le SQL, on les fait au niveau de la source de données durant l’extraction. Dans ce composant, on écrit une requête SQL qui récupère les données à partir de la source avec tous les traitements de conversions, traitement des valeurs NULL…
      
      2.      Eviter la tâche de Recherche (lookup) : elle est gourmande en ressource, pour chaque ligne en entrée elle doit parcourir toute la table avec laquelle elle fait la comparaison. Généralement, lorsqu’on veut récupérer les clés étrangères de dimension et les insérer dans les tables de fait on passe par ce composant. Donc il faut penser à faire des jointures au niveau des requêtes SQL d’extraction et récupérer ces clés.

      3.      Eviter le composant de Dimension à variation lente : car celui-là, il a plusieurs traitements à la fois : il fait un dispatching entre les lignes à insérer, à mettre à jour et à historiser… donc, il faut penser à passer par le SQL pour faire ce traitement.

      4.      Penser à utiliser le Change Data Capture (CDC) pour ne capter que les données qui ont connues des changements ou nouvellement insérées.

Enfin, c’est aux ingénieurs de voir comment optimiser leurs ETLs afin de gagner en termes de temps de ressources.


Comments

Popular posts from this blog