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
💥 Du 22 au 24 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Business Intelligence avec SQL Server 2019 et Power BI
  3. Alimenter l'entrepôt de données avec SSIS
Extrait - Business Intelligence avec SQL Server 2019 et Power BI Maîtrisez les concepts et réalisez un système décisionnel
Extraits du livre
Business Intelligence avec SQL Server 2019 et Power BI Maîtrisez les concepts et réalisez un système décisionnel
5 avis
Revenir à la page d'achat du livre

Alimenter l'entrepôt de données avec SSIS

Découverte de SSIS

Au cours des chapitres précédents, vous avez appris à modéliser un entrepôt de données. L’idée était de faire abstraction des sources de données disponibles dans votre société. Au cours de ce chapitre, vous allez apprendre et comprendre comment va se réaliser la remontée des données du système source vers un entrepôt de données. La principale difficulté est que celui-ci dispose d’une modélisation dimensionnelle conforme, très éloignée de la structure de vos données actuelles.

Dans la gamme SQL Server, l’outil qui va permettre de réaliser le chargement de ces données est SQL Server Integration Services (SSIS).

SSIS a deux aspects :

  • Un aspect classique avec une logique de flux de tâches, organisées par des règles de précédence. Cet aspect est appelé Flux de contrôles.

  • Un aspect plus spécifique au décisionnel, avec une logique purement ETL. Cet aspect est appelé Flux de données.

On peut utiliser SSIS sans pour autant faire de l’ETL. Par exemple, vous pouvez vous servir de SSIS pour exécuter des tâches de maintenance de bases de données, pour exécuter une suite de traitement un peu complexe ou pour réaliser de la réplication de données.

Toutefois...

Réaliser son premier flux SSIS

1. Réaliser le chargement du budget d’un seul site

Pour continuer à découvrir l’outil SSIS, nous allons réaliser le flux qui va permettre de charger les budgets de vente dans l’entrepôt de données.

Chez Distrisys, les budgets des ventes sont saisis par chaque site directement dans Excel, puis déposés dans un répertoire accessible par l’équipe informatique.

Ces fichiers budgets de ventes sont disponibles en téléchargement depuis la page Informations générales.

 Téléchargez les fichiers et déposez-les dans un répertoire sur votre disque dur. Vous devriez alors disposer de cinq fichiers au format .csv et portant chacun le nom du code du site auquel leurs prévisions sont destinées.

Videz les tables de faits précédemment alimentées avec les jeux d’essais. Par exemple, pour vider la table FactBudgetVente, utilisez la commande TRUNCATE TABLE FactBudgetVente.

 Dans SSIS, au niveau de l’onglet Flux de données, glissez cinq nouvelles tâches :

  • E : Source de fichier Plat (classé dans Autres sources) à renommer Extraction Fichier Budget par Site.

  • T : Colonne dérivée afin d’obtenir le SiteCode à renommer Obtenir SiteCode

  • T : Recherche afin d’obtenir le Site_FK à renommer Recherche Site_ID.

  • T : Recherche afin d’obtenir le Produit_FK à renommer Recherche Produit_ID.

  • L : Destination OLE DB (classé dans Autres destinations) à renommer Charger FactBudgetVente.

IMAGES/N05SO00050.png

Les cinq nouvelles tâches du flux de données

Pour renommer une tâche, cliquez dessus avec le bouton droit et sélectionnez Renommer.

Les croix rouges au niveau de chaque tâche signalent des erreurs. C’est normal à ce stade, car nous devons les configurer.

Nous allons ensuite configurer chacune de ces tâches une à une :

 Double cliquez sur la tâche Extraction Fichier Budget par Site afin d’entrer dans le configurateur de la tâche.

 Au niveau du Gestionnaire de connexions de fichiers plats, cliquez sur le bouton Nouveau.

IMAGES/N05EI0070.png

Éditeur de source de fichier plat

 L’Éditeur du gestionnaire de connexions de fichiers plats s’ouvre. Nommez la connexion...

Développer des flux ETL pour le décisionnel

1. Déroulement de l’exécution d’un processus ETL

Dans cette partie, nous allons vous présenter les différents types de flux, que vous serez en mesure de rencontrer pour alimenter votre entrepôt de données.

Dans les faits, les données ne vont pas transiter directement des systèmes sources vers l’entrepôt de données. Les données vont transiter par au moins un palier : le sas de données. Dans notre cas, nous appellerons cette base DistrisysSA (SA en anglais signifiant Staging Area).

Le chargement va se faire suivant ce schéma de principe :

images/05SO0160.png

Architecture de chargement de données

La base SQL MDS fait référence aux bases de données de référentiel du produit SQL Server Master Data Services. Nous présenterons cet outil dans le chapitre suivant Gérer les données de référence avec MDS.

Le Staging Area a plusieurs rôles :

  • Rapatrier les informations émanant de sources multiples, en garantissant qu’il n’y ait pas de pertes de données lors de ce processus.

  • Faire une zone mémoire tampon d’un état brut de la source à un instant passé et ainsi, faciliter la mise en œuvre d’un processus de reprise de données, que nous verrons dans ce chapitre à la section L’audit des flux ETL.

La mise en place d’un Staging Area est une étape indispensable à la bonne mise en œuvre de vos flux ETL.

Nous répartirons les rôles de la manière suivante :

  • Les flux entre les systèmes sources et le SA seront des flux de copie de données (EL). Nous éviterons donc, dans le SA, toute contrainte d’intégrité, et dans les flux, toute règle de gestion et autre requête avec jointure interne, qui peut provoquer une déperdition de données sources. Les tables du SA ne sont pas soumises à une modélisation. Le SA est simplement à but pratique afin de simplifier la seconde étape.

  • Les flux entre le SA et le DW seront de véritables flux ETL. Nous utiliserons alors pleinement l’onglet Flux de données de SSIS ainsi que les tâches de transformation. C’est à cette étape-ci, que nous réaliserons...

L’audit des flux ETL

1. Les objectifs de l’audit de flux ETL

Les exemples qui ont été présentés précédemment sont des flux inachevés, dans le sens où ses flux n’intègrent pas la gestion d’erreurs et l’audit du déroulement du flux.

Par expérience, l’audit de processus ETL, souvent appelé à tort gestion des rejets, génère soit beaucoup de fausses croyances, soit beaucoup de faux espoirs. Dans la plupart des cas, elle est même mise de côté. Une des principales idées reçues consiste à faire croire qu’un logiciel ou qu’un package miracle permet de mieux gérer la qualité des données. Dans les faits, l’audit des processus ETL est un travail de finesse du concepteur ETL, traitant un cas ou un contexte particulier. Si un cas peut difficilement être retranscrit à l’identique pour un autre cas, il en reste néanmoins des bonnes pratiques. C’est ce que nous allons voir au cours de cette partie.

Tout d’abord, nous allons nous poser les questions suivantes : qu’est donc l’audit de flux ETL ? Quel est son objectif ?

En fait, l’audit de processus ETL poursuit des objectifs multiples et permet de répondre à de nombreuses questions. Cela signifie que suivant le contexte, on va rendre plus performant l’audit sur certains points plutôt que sur d’autres.

Les objectifs poursuivis par l’audit des processus ETL sont :

  • L’audit de flux ETL permet d’informer du déroulement du processus ETL :

Le processus ETL a-t-il eu lieu ? Est-il terminé ? A-t-il terminé avec succès ? Quelle a été sa durée ?

  • L’audit de flux ETL permet de traiter et d’alerter sur les erreurs rencontrées :

Quelle est la nature des erreurs rencontrées ? Combien y en a-t-il ? Quelles sont-elles ? Quelles sont les origines des problèmes ? Combien dénombre-t-on d’origines différentes ? Quelles sont les lignes concernées ? Combien de lignes sont concernées ?

  • L’audit de flux ETL permet de suivre l’évolution de la performance du processus ETL :

Mon flux se fiabilise-t-il ? Génère-t-il de moins en moins d’erreurs ? Comment les durées d’exécution...

Gestion des paramètres de flux et mise en production

Dans les parties précédentes, vous avez appris à développer des flux pour charger une dimension, une table de faits ou bien des fichiers plats. À l’état actuel, vos flux fonctionnent bien tant que vous travaillez en local et seul.

Dans cette partie, nous allons aborder le paramétrage et la portabilité de vos flux sur des environnements différents (recette, production…).

Pour pouvoir porter les flux d’un environnement à un autre, nous allons devoir utiliser les paramètres du projet SSIS, qui vont nous permettre, par exemple, de variabiliser les chaînes de connexion du projet.

Ensuite, nous importerons notre projet SSIS dans un catalogue Integration Services, qui est en fait une base de données particulière du serveur SQL Server. Ce catalogue nous permettra notamment de déployer et exécuter nos packages. 

Dans ce catalogue, nous définirons des environnements. Un environnement contient un ensemble de valeurs qui lui sont propres. Nous pourrons ensuite lier un projet SSIS à un environnement, et ainsi valoriser les paramètres du projet à partir des données de l’environnement. On peut lier un projet à plusieurs environnements. C’est à l’exécution des flux que l’on choisira l’environnement et donc les valeurs des paramètres que l’on veut utiliser pour cette exécution.

images/05SO0655N.png

Principe de paramétrage et gestion des environnements dans SSIS

1. Paramétrage des flux

Actuellement, les connexions du Gestionnaire de connexions sont définies en dur. Nous allons donc les configurer afin que leurs chaînes de connexion soient issues d’un paramètre pour lequel vous pourrez définir une valeur en fonction de l’environnement. Vous faciliterez ainsi la portabilité de vos flux. Pour cela, nous allons devoir créer deux paramètres :

  • ChaineConnexionSA de type string contiendra la chaîne de connexion à la base DistrisysSA

  • ChaineConnexionDW de type string contiendra la chaîne de connexion à la base DistrisysDW

Si vous prévoyez l’exécution de vos flux de production avec l’agent SQL Server, vos flux seront exécutés avec le compte de service de l’agent...