Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Black Friday: -25€ dès 75€ sur les livres en ligne, vidéos... avec le code BWEEK25. J'en profite !

Les bases de l’ETL

Présentation et installation de la solution de développement de ce livre

Une partie des exemples présentés dans cet ouvrage sont disponibles en téléchargement. Afin de pouvoir les exploiter, il est indispensable de disposer de l’environnement matériel et logiciel ci-dessous. Si ce n’est pas le cas, il est tout à fait possible de parcourir l’ouvrage et alors seule la partie pratique en sera limitée. 

  • une machine 4 cœurs, 8 Go de RAM, disque SSD

  • SQL Server 2017 Developer/Enterprise Edition

  • Visual Studio SSDT 2015

Cet ouvrage ne couvre pas les étapes d’installation de SQL Server ni de Visual Studio. Des références externes pourront être utilisées.

Les bases avant une première implémentation

1. Généralités

Avant de procéder au moindre développement, il est nécessaire de fixer quelques points de définition. Généralement, Integration Services est qualifié d’outil d’extraction, de transformation et de chargement de données, ce qui est juste, mais cette description simpliste limite la portée réelle de cette solution. 

Un outil d’ETL complet se doit de fournir des fonctionnalités d’orchestration, c’est-à-dire d’ordonnancement des tâches, pour traiter tout le cycle d’intégration des données. Par exemple, avant de charger un fichier, il est fréquent de devoir le copier depuis un serveur, pour éventuellement, une fois les données récupérées, notifier tel ou tel opérateur, ou lancer un traitement externe.

Il doit également fournir un système de journalisation des exécutions qui permet de suivre la bonne avancée des traitements et de tracer les éventuelles erreurs, que ce soit pendant la phase de développement ou bien lorsque la solution est en production.

2. Le flux de contrôle : généralités

a. Définition

Le flux de contrôle (Control Flow) est ce que l’on peut désigner comme le point d’entrée, la couche externe d’un lot SSIS. C’est à partir de ce dernier que tout ce qui doit être exécuté dans un lot le sera. Il encapsule d’autres éléments comme l’indispensable flux de données (Data Flow), le Gestionnaire d’Évènements, les Paramètres. C’est lui qui offre une vision complète sur tout ce que réalise un lot SSIS en termes d’exécution. Il est donc le premier objet auquel les développeurs ont à faire. Il est possible de le comparer à une fonction Main() des langages de développement comme le C#.

Les principaux objets qui le composent sont appelés des Tâches et ce n’est pas par hasard, car le flux de contrôle peut également être perçu comme un ordonnanceur de tâches.

C’est tout naturellement que l’on trouve dans le flux de contrôle les structures...

Première implémentation

Les sections précédentes de ce chapitre constituent les bases à connaître avant de créer un premier lot SSIS. Il s’agit maintenant de comprendre comment s’articulent tous ces concepts entre eux et de profiter de l’occasion pour introduire de nouvelles notions. La suite de cette section utilise le lot 001 - HotspotCollecte.dtsx de la solution SSIS servant de support à cet ouvrage. Ce package a pour objectif l’insertion d’une collection de fichiers dans une base SQL. Il présente un exemple simple et concret de ce qu’il est basiquement possible de faire avec SSIS. Ce cas d’usage se retrouve sur la plupart des projets décisionnels.

Comme le flux de données est finalement inclus dans le flux de contrôle, il y a de grandes chances que les développements débutent par ce dernier. Au début de ce chapitre, les grands principes du flux de contrôle ont été abordés : tâches, boîte à outils, fenêtre de conception et contraintes de précédence, ainsi que des notions transverses comme les variables ou les gestionnaires de connexions.

1. Conteneurs

a. Principes de fonctionnement

Le flux de contrôle du lot 001 - HotspotCollecte.dtsx est plus complexe, car plus complet que ce qui a été observé jusqu’à maintenant.

images/ri3-3-1-1-RI-1.PNG

L’image ci-dessus présente une série de rectangles contenant des tâches. Ces rectangles sont ce que l’on appelle des conteneurs et ils sont de quatre sortes :

  • conteneur de boucles For

  • conteneur de boucles ForEach

  • conteneur de séquences

  • groupe

Un conteneur va contenir des tâches, ou d’autres conteneurs. Pour positionner des éléments en son sein, il faut glisser-déposer chaque objet sur le conteneur. Il est tout à fait possible d’orchestrer les tâches à l’intérieur du conteneur grâce aux contraintes de précédence, à la manière de ce qui a été vu jusqu’à présent.

Les conteneurs sont utiles pour trois choses : organiser un lot SSIS et améliorer sa lisibilité, créer des boucles d’exécution et définir la portée des objets.

Le premier de ces trois cas d’usage...

Patterns de développement

Il est fréquent sur SSIS d’avoir affaire aux mêmes logiques de développement, quelles que soient les sources et les destinations des données. Ces patterns permettent de gagner du temps de développement, mais également de s’assurer de l’implémentation de bonnes pratiques. Voici la présentation de quelques-uns, ceux qui reviennent le plus souvent.

1. Éviter le composant Tri

Ce composant est très pratique et très souvent utilisé. C’est un tort, car il peut s’avérer très consommateur de ressources et de temps d’exécution. Il a pour objectif de trier, de manière croissante ou décroissante, les données du flux en fonction d’un certain nombre de colonnes dans un ordre à définir dans ce composant. Il possède deux particularités qui font qu’on le retrouve dans les développements pour d’autres objectifs que le tri à proprement parler. Premièrement, il permet de sélectionner et donc potentiellement de réduire le nombre de colonnes à utiliser dans la suite du flux de données, là où une grande partie des composants ne font qu’ajouter des colonnes ou en modifier le contenu. Pour cela, il faut décocher les cases à cocher dans la colonne Transfert direct du composant. Ensuite, il offre la possibilité de supprimer les doublons dans les lignes de données (l’équivalent d’un Distinct SQL). Pour ce faire, une case à cocher Supprimer les lignes avec des valeurs de tri en double est mise à notre disposition. À noter que la détermination des doublons se fait sur toute la clé de tri avec prise en compte des indicateurs de comparaison si ces derniers ont été positionnés. Lorsqu’il y a doublon, c’est la dernière occurrence rencontrée qui sera conservée dans la suite du flux de données. Voici un exemple de configuration de ce composant :

images/ri3-4-1-RI-1.png

Dans la fenêtre Colonnes d’entrée disponibles, il y a une case à cocher de chaque côté de la colonne Nom qui contient le nom de la colonne dans le flux. La case de gauche, si elle est cochée, indique que la colonne participe au tri des données du flux....