Vous êtes sur la page 1sur 93

ETL AVEC SQL SERVEUR

Sommaire
Présentation de SSIS ................................................................................................................................ 2
Présentation de SQL Serveur Data Tools................................................................................................. 3
Notre premier flux de données ............................................................................................................... 7
Extraction Fichier budget par site ....................................................................................................... 9
Obtenir SiteCode ............................................................................................................................... 11
Recherche Site_ID ............................................................................................................................. 12
Recherche Product_ID ....................................................................................................................... 15
Charger FactBudgetVente ................................................................................................................. 19
ETL à partir de plusieurs fichiers ........................................................................................................... 22
Développement des flux ETL pour le décisionnel ................................................................................. 30
Les flux de copie des données sources vers le SA. ............................................................................ 32
Flux pour Charger une dimension ..................................................................................................... 43
Cas d’une dimension SCD .................................................................................................................. 50
Flux pour charger une table de faits ................................................................................................. 57
Mise en Œuvre de ETL chargement de DistrisysDW FactFacture et FactFactureEntete............... 60
Audit des flux ETL .................................................................................................................................. 66
Objectifs de l’audit de flux ETL .......................................................................................................... 66
Conception d’un système d’audit de flux .......................................................................................... 67
Gestion des paramètres de flux et mise en production ........................................................................ 73
Parametrage des flux......................................................................................................................... 73
Création du catalogue Intégration Services ...................................................................................... 76
Déploiement du projet SSIS sur le serveur de développement ........................................................ 78
Les environnements .......................................................................................................................... 81
Mise en production du projet SSIS .................................................................................................... 87
Planifier un flux SSIS .......................................................................................................................... 90

Réf. 1 M. THIOYE Page 1 / 93


ETL AVEC SQL SERVEUR
Présentation de SSIS

SSIS est un ETL (Extract, Transform & Load - Extraire, Transformer et Charger) :
il est composé principalement d’un moteur puissant de traitement des données.
Ce moteur permet de lire plusieurs sources de données hétérogènes, d’effectuer
des transformations sur ces données, puis de les écrire dans une ou plusieurs
destinations et cela en mode différé. Bien que cette fonctionnalité semble des
plus intéressantes pour l’ensemble du SI (Système Informatique), cet ETL est
reconnu comme un outil de Business Intelligence destiné à l’alimentation du Data
Warehouse.

SQL Server propose déjà, en standard, un moteur de données puissant. Microsoft


adjoint à sa solution l’ETLSSIS car il permet de délester les applications OLTP des
traitements de BI, d’accéder à des sources et destinations variées et d’utiliser
une palette de fonctionnalités complémentaires comme le transfert FTP, la
sauvegarde de la base de données SQL Server, ou l’envoi d’un courriel. Toutes
ou partie de ces fonctionnalités complémentaires vous sont accessibles par
d’autres moyens (scripts, développement .NET, voire Transact SQL), mais elles
sont ici rassemblées dans un environnement de développement purement
graphique, ce qui est à la fois un avantage et un inconvénient. Un avantage car
les algorithmes apparaissent visuellement au développeur ou même à une
personne non initiée. Un inconvénient car au-delà de la représentation graphique,
tout le paramétrage est masqué dans des fenêtres de propriétés.

Recourir à l’ETL est recommandé pour les gros projets, mais ce n’est pas une
nécessité. Si les sources sont de type SQL Server ou texte, et que les moteurs
de bases OLTP sont loin d’être saturés, utiliser le moteur SQL pour charger les
données dans le Data Warehouse est une solution viable et économique
(cf. chapitre Tirer parti de SQL pour l’ETL).

SSIS est composé d’un moteur de flux de données, le cœur de l’ETL, et d’un
moteur de flux de contrôle. Plus qu’une simple boîte à outils, le flux de contrôle
permet d’agencer ses outils en les liant par des contraintes de précédence qui

Réf. 1 M. THIOYE Page 2 / 93


ETL AVEC SQL SERVEUR
conditionnent l’exécution d’une tâche par rapport à celle d’une autre. Dans leflux
de contrôle, le flux de données est une simple tâche au même titre que les autres.
C’est pourtant le flux de données qui est le cœur du produit.

L’histoire de l’ETL chez Microsoft ne fut pas un long fleuve tranquille. Il y a eu


d’abord DTS (Data Transformation Services), qui fut remplacé avec SQL Server
2005 par SSIS 2005 puis 2008, un ETL puissant et complet pour ce qui est de
l’implémentation, mais sans aucune fonctionnalité concernant l’exploitation et
l’administration. Fort heureusement, le cru 2012 répond enfin à ces lacunes en
revisitant totalement les aspects déploiement et production. Il est désormais
possible de comparer cet ETL à ses concurrents et de le positionner dans des
solutions, même lorsque SQL Server en est absent. À l’arrivée de SSIS 2005, il a
fallu abandonner le travail réalisé avec DTS. La version 2012 de SSIS garde la
compatibilité avec la version précédente grâce aux projets utilisant le modèle de
déploiement de packages. Malheureusement ce mode ne permet pas l’utilisation
de la majorité des nouveautés. Pour bénéficier des innovations majeures qui
transforment SSIS d’une boîte à outils de développement en une véritable
solution d’entreprise, il vous faudra créer des projets ou migrer l’existant
vers le modèle de déploiement de projets. Cet ouvrage fait le choix de se
consacrer uniquement à ce mode. En effet lemodèle package a été traité dans
l’édition précédente, et devient obsolète au regard du nouveau modèleprojet.

Présentation de SQL Serveur Data Tools

Outils de données SQL Server (SSDT) révolutionne le développement de bases


de données en proposant un modèle déclaratif omniprésent qui couvre toutes les
phases de développement des bases de données dans Visual Studio. Vous
pouvez utiliser les fonctionnalités de conception Transact-SQL de SSDT pour
générer, déboguer, entretenir et refactoriser des bases de données. Vous pouvez
vous aider d'un projet de base de données ou directement avec une instance de
base de données connectée située sur site ou hors site.

Réf. 1 M. THIOYE Page 3 / 93


ETL AVEC SQL SERVEUR
Les développeurs peuvent utiliser les outils Visual Studio pour le développement
de base de données. Outils tels que : la navigation dans le code, IntelliSense, la
prise en charge du langage en parallèle à ce qui est disponible pour C# et Visual
Basic, la validation spécifique à la plateforme, le débogage et la modification
déclarative dans l'éditeur Transact-SQL. SSDT fournit aussi un Concepteur de
tables visuel pour créer et modifier des tables dans des projets de base de
données ou des instances de base de données connectée. Lorsque vous utilisez
des projets de base de données dans un environnement de travail en équipe,
vous pouvez employer le contrôle de version pour tous les fichiers. Lorsque vient
le moment de publier votre projet, vous pouvez effectuer la publication sur
toutes les plateformes SQL prises en charge, notamment SQL Database et SQL
Server. La fonctionnalité de validation de plateforme de SSDT garantit le
fonctionnement de vos scripts sur la cible spécifiée.
L'Explorateur d'objets SQL Server dans Visual Studio offre une vue de vos objets
de base de données semblable à SQL Server Management Studio. L'Explorateur
d'objets SQL Server vous permet d'effectuer des tâches de conception et
d'administration de base de données allégées. Vous pouvez facilement créer,
modifier, renommer et supprimer des tables, des procédures stockées, des types
et des fonctions. Vous pouvez aussi modifier des données de table, comparer des
schémas ou exécuter des requêtes à l'aide des menus contextuels de
l'Explorateur d'objets SQL Server.

Réf. 1 M. THIOYE Page 4 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 5 / 93


ETL AVEC SQL SERVEUR

Nb : Attention dans le monde du décisionnel, un entrepôt de données ne se


charge pas avec de simples requêtes SQL. Vous verrez que les exigences de
traçabilité et de maintenance de tels flux sont trop élevées pour que des
requêtes SQL remplissent ce rôle correctement.

Réf. 1 M. THIOYE Page 6 / 93


ETL AVEC SQL SERVEUR
Notre premier flux de données

Réf. 1 M. THIOYE Page 7 / 93


ETL AVEC SQL SERVEUR

Dans la figure précédente nous avons placés 5 objets :

- Extraction Fichier budget par site, va se connecter à la source de données qui est un fichier
Excel.
- Obtenir SiteCode, pour une transformation.
- Recherche Site_ID, pour une transformation.
- Recherche Product_ID, pour une transformation.
- Charger FactBudgetVente, place les informations dans la destination.

Réf. 1 M. THIOYE Page 8 / 93


ETL AVEC SQL SERVEUR
Nous allons montrer comment configurer ces objets.

Extraction Fichier budget par site

Réf. 1 M. THIOYE Page 9 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 10 / 93


ETL AVEC SQL SERVEUR
Obtenir SiteCode

Réf. 1 M. THIOYE Page 11 / 93


ETL AVEC SQL SERVEUR

Recherche Site_ID
La tâche de recherche (ou lookup en anglais) est une tâche essentiellement et très caractéristique
des processus ETL. Cette tâche va établir une correspondance entre un ou plusieurs champs du flux
courant avec des champs d’une table de référence. En sortie, nous pourrons en déduire un ou
plusieurs champs de cette même table de référence.

Nous allons en premier temps mettre en place la connexion avec la base contenant les tables de
dimensions qui n’est rien d’autre que notre datawarehouse.

Réf. 1 M. THIOYE Page 12 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 13 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 14 / 93


ETL AVEC SQL SERVEUR

Recherche Product_ID

Réf. 1 M. THIOYE Page 15 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 16 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 17 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 18 / 93


ETL AVEC SQL SERVEUR
Charger FactBudgetVente

Réf. 1 M. THIOYE Page 19 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 20 / 93


ETL AVEC SQL SERVEUR

Vous venez de produire votre premier ETL.

Réf. 1 M. THIOYE Page 21 / 93


ETL AVEC SQL SERVEUR
ETL à partir de plusieurs fichiers
Nous allons voir comment paramétrer dynamiquement notre ETL pour extraire sur un ensemble de
fichier étant dans un même répertoire. Nous conservons la première partie.

Afin de pouvoir lancer plusieurs fois lors du développement, nous allons ajouter une tâche de flux de
contrôle qui efface, avant chaque exécution, toutes les lignes de l’année 2015 de la table
FactBudgetVente.

Réf. 1 M. THIOYE Page 22 / 93


ETL AVEC SQL SERVEUR

Editez le et mettez la requête suivante :

delete from FactBudgetVente where DateBudget_FK>=20150101

Ajouter maintenant un conteneur de boucle Foreach.

Réf. 1 M. THIOYE Page 23 / 93


ETL AVEC SQL SERVEUR

Configurer la boucle foreach afin qu’elle puisse prendre l’ensemble des fichiers du dossier.

Réf. 1 M. THIOYE Page 24 / 93


ETL AVEC SQL SERVEUR

Sur mappage de variable, faite la configuration pour le premier fichier et mettez l’index à 0.

Nous allons dynamiser la valeur du chemin d’accès de la connexion FichierPlatBudget à l’aide de


cette nouvelle variable.

Réf. 1 M. THIOYE Page 25 / 93


ETL AVEC SQL SERVEUR

Mettre à jour l’url du chemin d’accès dans la partie Data Flow dans la formule du SiteCode.

Réf. 1 M. THIOYE Page 26 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 27 / 93


ETL AVEC SQL SERVEUR

Maintenant quand vous exécutez le programme avec les fichiers, les lignes de 2015 seront
supprimées dans un premier temps et remplacées par ceux des fichiers du répertoire
C:\data\excelFile.

Réf. 1 M. THIOYE Page 28 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 29 / 93


ETL AVEC SQL SERVEUR

Développement des flux ETL pour le décisionnel


Dans les faits, les données ne vont pas transiter directement des systèmes 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.

La base MDS (Master Data Service) est pour la gestion des données de référence.

Les rôles du SA sont :

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

Réf. 1 M. THIOYE Page 30 / 93


ETL AVEC SQL SERVEUR
- 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.

Les rôles seront répartis comme suit :

- Les flux entre les système 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. Le SA est simplement à but pratique afin de simplifier la seconde étape.
- Les flux entre de DW et le SA seront de véritables flux de données de SSIS ainsi que les tâches
de transformation. C’est à cette étape-ci, que nous réaliserons un audit précis de nos flux.

Déroulement de l’exécution des flux décisionnels.

En décisionnel, il existe donc 3 sortes de flux :

- Les flux de copie des données sources vers le SA.


- Les flux de gestion et de mise à jour des dimensions du DW.
- Les flux de chargement des tables de faits du DW.

Dans la suite nous illustreront la réalisation de chacun de ces flux.

Réf. 1 M. THIOYE Page 31 / 93


ETL AVEC SQL SERVEUR
Les flux de copie des données sources vers le SA.

La base DistrisysSA contient les 3 tables suivantes :

- Facture : contenu des tables sources concernant la facturation.


- Produit : contenu des tables sources concernant les produits.
- ListeSystemeSource : Liste des sites auxquels nous souhaitons nous connecter.

Réf. 1 M. THIOYE Page 32 / 93


ETL AVEC SQL SERVEUR

Les chaines de connexion existantes font référence à un serveur et une instance SQL Server.
Remplacer les valeurs des chaines de connexions.

Ce package dispose des variables suivantes :

Réf. 1 M. THIOYE Page 33 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 34 / 93


ETL AVEC SQL SERVEUR

Configuration de l’objet « Supprimer les lignes de DitrisysSA Facture ».

Configuration de l’objet « Lire la table DitrisysAudit ListeSystemeSource »

Réf. 1 M. THIOYE Page 35 / 93


ETL AVEC SQL SERVEUR

Configuration de la boucle Foreach « Pour chaque Site »

Réf. 1 M. THIOYE Page 36 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 37 / 93


ETL AVEC SQL SERVEUR

Configuration du data flow « Copie de Facture de la source vers DistrisysSA »

Réf. 1 M. THIOYE Page 38 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 39 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 40 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 41 / 93


ETL AVEC SQL SERVEUR

La connexion à la source de données se fait par la configuration de la connexion


DistrisysERP_SiegeSocial1. A chaque itération, la valeur de la chaine de connexion est récupérer dans
la variable User ::ChaineConnexionSource.

Réf. 1 M. THIOYE Page 42 / 93


ETL AVEC SQL SERVEUR
Flux pour Charger une dimension
Les flux de dimension doivent vérifier :

- S’il y a un nouveau membre à ajouter dans la dimension.


- S’il y a eu une modification dans une des propriétés d’un élément de la dimension. Si c’est le
cas, le flux effectue la mise à jour.
- Dans le cas de modification ou d’ajout d’un nouveau membre, le flux doit émettre une alerte.

Nous allons utiliser la table produit pour cette démonstration.

Le flux de contrôle ne contient qu’une tâche de flux de données.

Réf. 1 M. THIOYE Page 43 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 44 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 45 / 93


ETL AVEC SQL SERVEUR

L’idée du flux est de comparer ces deux sources de données, en réalisant une jointure externe à
gauche en faveur des données de DistrisysSA, à la manière d’un LEFT OUTER JOIN en SQL.

En sortie de fusion, la tache Fractionnement conditionnel, nommée Identification des nouveaux


produits à mettre à jour, permet par des tests simples d’identifier les lignes en ajout, les lignes à
modifier, les lignes pour lesquelles aucun traitement n’est nécessaire.

S’il s’agit d’une nouvelle ligne, une tâche de destination OLE DB se charge de faire l’ajout dans la
table DimProduit de DistrisysDW.

Réf. 1 M. THIOYE Page 46 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 47 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 48 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 49 / 93


ETL AVEC SQL SERVEUR
Cas d’une dimension SCD
Dans certains cas, la modification des données est trop brutale pour l’utilisateur. Il faut alors gérer les
modifications dans la dimension de manière plus fine.

Exemple : la vente des cafetières bat des records en prenant une part de plus en plus conséquente
dans le CA de la société. La stratégie de l’entreprise est donc de développer la vente de cafetières. La
société souhaite que cafetière devienne une famille Produit au même titre que grand Ménager et
petit Ménager.

Si nous procédons comme le flux précédent, par écrasement, nous ne répondrons pas aux besoins de
la direction. Nous perdrons la vision de l’historique.

Le concept de dimension à variation lente ou SCD (Slowly Changing Dimension) a été défini par Ralph
Kimball, le pére fondateur de l’entrepôt de données.

Ralph KIMBALL identifie plusieurs types de modifications au niveau de chaque champ de données de
la dimension :

- Le type 0 (attribut fixe) : le champ ne peut être modifié. Dans notre cas, il s’agit du
ProduitCode ou du Produit_PK par exemple.
- Le type 1 (modification d’attribut) : le champ peut être modifié. En cas de modifications,
l’ancienne valeur est simplement écrasée par la nouvelle valeur. C’est le cas que nous avons
mis en œuvre au flux précédent avec les champs Produits, SousFamilleCode, SousFamille,
FamilleCode et Famille.
- Le type 2 (attribut d’histoire) qui suggéré que les modifications du champ considéré
n’impactent pas les valeurs passées mais seulement les valeurs.

Prenons l’exemple DimProduit :

Réf. 1 M. THIOYE Page 50 / 93


ETL AVEC SQL SERVEUR
Les cafetières qui sont à la 8, 10 et 11 lignes doivent être modifier dans une nouvelle famille tout en
gardant l’historique.

Ce qui implique d’ajouter une nouvelle colonne (valide de type booléan) dans la table DimProduit
pour garder l’historique.

Mettons en Œuvre le Package.

Réf. 1 M. THIOYE Page 51 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 52 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 53 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 54 / 93


ETL AVEC SQL SERVEUR

Sur l’écran membre de la dimension inférés, décrochez la case Activer la prise en charge des
membres inférés.

Réf. 1 M. THIOYE Page 55 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 56 / 93


ETL AVEC SQL SERVEUR

Flux pour charger une table de faits


Un flux de chargement de table de faits aux caractéristiques suivantes :

- Il fait suite au chargement et à la mise de toutes les tables de dimension.


- Il doit s’assurer, avant l’insertion, des contraintes d’intégrité entre la table de faits et ses
dimensions.
- Il se charge uniquement en insertion rapide.
- Il possède toutes les caractéristiques d’un flux ETL : Extraction simple d’une source (pas de
grandes requêtes SQL), puis passage par des tâches de transformations et d’évaluation des
données, et enfin chargement rapide des données.

Remarque : Nous ne ferons jamais de mise à jour de données par requête SQL update sur une table
de faits. Si vous devez en arriver à de telles pratiques, révisez la stratégie ou la conception de vos
flux, il y a forcément une meilleure solution.

Réf. 1 M. THIOYE Page 57 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 58 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 59 / 93


ETL AVEC SQL SERVEUR
Mise en Œuvre de ETL chargement de DistrisysDW FactFacture et FactFactureEntete

Réf. 1 M. THIOYE Page 60 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 61 / 93


ETL AVEC SQL SERVEUR

Cette succession de tâche de recherche constitue la meilleure vérification des contraintes d’intégrité
entre tables de faits et de dimensions.

Ensuite le flux se divise en deux :

- Un premier flux va charger la table FactFacture.


- Un second flux va charger la table FactFactureEntete.

La division du flux sans condition est assurée par la tâche Muticast (Multidiffusion).

Réf. 1 M. THIOYE Page 62 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 63 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 64 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 65 / 93


ETL AVEC SQL SERVEUR

Audit des flux ETL


Objectifs de l’audit de flux ETL
Par l’expérience, l’audit de processus ETL, génère soit beaucoup de fausses croyances, soit beaucoup
de faux espoirs. 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.

Qu’est donc l’audit de flux ETL ? quel est son objectif ?

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

- L’audit de flux 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 ? 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’erreur ? comment les durées
d’exécution des différents flux évoluent-elles ?
- En cas d’erreur à rebours, sur une exécution de flux, l’audit de flux ETL doit permettre
d’identifier les lignes concernées.

Les maîtres mots de l’audit ETL sont traçabilité et communication :

Réf. 1 M. THIOYE Page 66 / 93


ETL AVEC SQL SERVEUR
- Traçabilité, vous l’aurez compris, pour répondre aux questions d’enquêtes classiques de type
qui ? quoi ? où ? quand ? comment ? pourquoi ?
- Communication, car l’audit de processus ETL est intimement lié aux problématiques
décisionnelles et donc aux prises de décision.

La délivrance de l’information ne vaut que si on est capable d’en estimer ou d’en évaluer son niveau
de fiabilité.

Conception d’un système d’audit de flux


Notre expérience nous a montré qu’il existe trois grandes stratégies ou scénarios de gestion
d’erreurs, qui impliquent chacun des conceptions et des approches complétement différentes.

Ces stratégies sont les suivantes :

- La publication garantie des données (la stratégie de chargement de100% des données, 100%
fiables.).
- L’utilisation d’une base de rejets (la stratégie de chargement de X% des données, 100%
fiables.).
- Système avec reprise automatique d’erreurs (La stratégie de chargement de 100% des
données, X% fiable.).

Stratégie de Données Fiabilité des Avantages Inconvénients Usages


gestion du DW données
d’erreur du DW
Publication 100 % 100 % Très bonne virilité Données qui ne Usage réservé
(Complètes) (Garanties) pour le décideur sont généralement généralement à des
garantie des final qui peut s’y pas très fraîches. services métier
Données fier. De quelques jours dans le cadre de
ou mieux. l’utilisation de
magasins de
données (hors du
périmètre de
l’ouvrage)
Utilisation X % (partielles) 100 % (garanties Fraîcheur des Aucune évaluation Pour une mise en
sans erreurs données de la qualité des œuvre rapide, une
d’une base de techniques) données. Les démonstration
rejets données sont
potentiellement
fausses
Stratégie de 100 % (complètes) X % (partielles) Fraîcheur des Système à penser Usage préféré
données. La plupart et à concevoir à la mettre en place
reprise des données en base. Pour être dans le cadre d’un
automatique erreur sont visibles, efficace le système entrepôt de
d’erreurs car marqué d’un doit être données.
membre inconnu. communiquant et
Ce sont les offrir réellement la
utilisateurs qui possibilité aux
corrigent leurs utilisateurs de
données et le corriger leurs
système se reprend données
de lui-même.

Dans la suite, nous allons opter pour la stratégie de reprise automatique d’erreur. Nous allons voir la
mise en œuvre.

Réf. 1 M. THIOYE Page 67 / 93


ETL AVEC SQL SERVEUR
Concrètement, le système d’audit va être organisé autour de deux tables principales :

- AuditFlux : cette table va faire le bilan de l’exécution d’un flux en particulier.


- AuditEvenement : cette table va enregistrer les différents événements survenant lors de
l’exécution du flux.

Le système de reprise de données va être le suivant :

- A chaque début de flux de chargement de tables de faits, le flux va parcourir la table


AuditFlux pour identifier les flux à reprendre.
- Pour chaque flux à reprendre, il va supprimer les lignes, ajoutées précédemment par ce flux,
et va rejouer le flux sur la même plage de dates, en espérant que les données d’erreurs
précédemment remontées auront été alors corrigées.
- Une fois tous les flux rejoués, il va ajouter et initialiser une nouvelle ligne dans la table
auditFlux.
- Puis le flux du jour va s’exécuter normalement en chargeant les données de la plage de dates
du jour.
- Lors de l’execution du flux des événements vont s’ajouter dans la table AuditEvenement.
- En fin d’exécution du flux, la ligne identifiant le flux sera mise à jour pour faire le bilan de
l’exécution du flux.
- Si le flux est identifié comme étant à reprendre, il sera alors repris à la prochaine exécution.

Attention, le système de reprise de données n’est valable que pour les flux de chargement de table
de faits.

Dans l’exemple qui va suivre, nous allons compléter le système par une table AuditTraitement, qui
va nous permettre de suivre l’ensemble des exécutions de flux, flux de reprise inclus.

Réf. 1 M. THIOYE Page 68 / 93


ETL AVEC SQL SERVEUR
Les champs DateDebutPlageDonnees et DateFinPlageDonnees encadreront l’extraction des données
et fixeront donc le périmètre du flux.

Les champs DateDebutFlux1ereExecution et DateFinFlux1ereExecution déterminent la date de


début et de fin lors de la première exécution. On pourra ainsi en déduire la durée du flux.

Le flux pouvant se reprendre, les champs DateDebutFluxDerniereExecution et


DateFinFluxDerniereExecution déterminent la date de début et de fin lors de la dernière exécution
du flux.

Créez la table AuditEvenement avec la structure ci-dessous, activez l’incrémentation automatique


sur le champ AuditEvenement_PK.

Il y a trois catégories d’événements :

- Les événements de type comptage. Ils comptabilisent le nombre de lignes. On comptera


notamment le nombre de lignes extraites et le nombre de lignes chargées.
- Les événements de type erreur technique. Ils remontent le code et la description technique
de l’erreur due à une défaillance du flux.
- Les événements de type avertissement. Ils correspondent aux alertes remontées par les
points de vigilance. Les points de vigilance sont mis en œuvre au moment du développement
du flux.

Créez enfin la table AuditTraitement avec la structure ci-dessous.

Réf. 1 M. THIOYE Page 69 / 93


ETL AVEC SQL SERVEUR

Au niveau de chaque table de dimension, ajouter deux nouvelles colonnes d’audit :

- AuditFluxAjout_FK : pour identifier le flux qui à ajouter la ligne.


- AuditFluxModification_FK : pour identifier le flux qui a modifié la ligne pour la dernière fois.

Exemple avec DimProduit.

De même, au niveau de chaque table de faits, ajoutez une nouvelle colonne d’audit :
AuditFluxAjout_FK, pour identifier le flux qui a ajouté la ligne.

Réf. 1 M. THIOYE Page 70 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 71 / 93


ETL AVEC SQL SERVEUR

Schéma de principe de l’erreur de contrôle

La tâche 1 de type Recherche redirige les non-correspondances de code vers la tâche 2.

La tâche 2 est un ensemble de tâche qui va :

- Ajouter une nouvelle ligne dans la table AuditEvenement identifiant le champ et la valeur en
erreur.

Par exemple, le champ peut être ClientCode et la valeur sans correspondance C11.

Réf. 1 M. THIOYE Page 72 / 93


ETL AVEC SQL SERVEUR
- Attribuer par défaut la clé 0 (membre inconnu) aux lignes avec code sans correspondance.

La tâche, d’union, va réconcilier les lignes avec correspondance et les lignes avec membre inconnu.

Gestion des paramètres de flux et mise en 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 viabiliser les chaines de
connexion du projet.

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

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.

Parametrage des flux


Les connexions du gestionnaire de connexions sont définies en dur. Nous allons donc les configurer
afin que leurs chaines de connexion soient issues d’un paramètre pour lequel vous pourrez définir
une valeur en fonction de l’environnement.

Prévoyez de donner les droits d’accès en lecture et en écriture des comptes (agent SQL Server ou
compte exécutant le package) aux bases de données auxquelles elles doivent accéder.

Paramétrer la chaine de connexion pour SA et DW.

Réf. 1 M. THIOYE Page 73 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 74 / 93


ETL AVEC SQL SERVEUR

Nous devons deployer notre projet dans un catalogue Integration Services.

Réf. 1 M. THIOYE Page 75 / 93


ETL AVEC SQL SERVEUR
Création du catalogue Intégration Services

Réf. 1 M. THIOYE Page 76 / 93


ETL AVEC SQL SERVEUR

SSISDB base de données et SSISDB catalogue Intégration Services sont liés, la base ne sera pas
directement utilisée sauf pour des opérations de maintenance.

Nous allons maintenant créer un répertoire dans le catalogue afin d’y déployer notre projet SSIS.

Réf. 1 M. THIOYE Page 77 / 93


ETL AVEC SQL SERVEUR
Déploiement du projet SSIS sur le serveur de développement

Réf. 1 M. THIOYE Page 78 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 79 / 93


ETL AVEC SQL SERVEUR

C’est dans ce sous-répertoire que nous allons pouvoir définir notre environnement qui contiendra les
variables qui serviront à renseigner les paramètres des packages à leur exécution.

Réf. 1 M. THIOYE Page 80 / 93


ETL AVEC SQL SERVEUR
Les environnements

Réf. 1 M. THIOYE Page 81 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 82 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 83 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 84 / 93


ETL AVEC SQL SERVEUR

Pour exécuter un package

Réf. 1 M. THIOYE Page 85 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 86 / 93


ETL AVEC SQL SERVEUR
Mise en production du projet SSIS

Réf. 1 M. THIOYE Page 87 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 88 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 89 / 93


ETL AVEC SQL SERVEUR
Planifier un flux SSIS

Réf. 1 M. THIOYE Page 90 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 91 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 92 / 93


ETL AVEC SQL SERVEUR

Réf. 1 M. THIOYE Page 93 / 93

Vous aimerez peut-être aussi