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
Post a Comment
Put your comments here, please.
Share with us you vision...