Vous êtes sur la page 1sur 42

23/04/14 Business Intelligence avec SQL Server 2012

editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 1/42




Forums Tutoriels Magazine FAQs Blogs Projets Chat Newsletter tudes Emploi Club Contacts
Solutions d'entreprise Business Intelligence ERP / PGI CRM SAS Cloud Computing SAP Microsoft BizTalk Server Talend
ACCUEIL BI

FORUMS BI

TUTORIELS BI

LIVRES BI

FAQs BI

GLOSSAIRE BI

SOURCES BI

BLOGS BI
Business Intelligence avec SQL Server 2012
Table des matires
1. Dcouverte de SSIS
2. Raliser son premier
flux SSIS
2-1. Raliser le
chargement du
budget d'un seul
site
2.2. Charger les
donnes de budget
partir de plusieurs
fichiers Excel
3. Dvelopper des flux ET
L pour le dcisionnel
3-1. Droulement
de l'excution d'un
processus ETL
3-2. Raliser un flux
pour charger le sas
de donnes
3-3. Raliser un flux
pour charger une
dimension
3-3-1. Cas
d'une
dimension
standard
3-3-2. Cas
d'une
dimension en
SCD
3-4. Raliser un flux
pour charger une
table de faits
4. L'audit des flux ETL
4-1. Les objectifs
de l'audit de flux
ETL
4-2. Conception
d'un systme
d'audit de flux
4-3. Exemple de
flux avec audit
5. Gestion des
paramtres de flux et
mise en production
5-1. Paramtrage
des flux
5-2. Cration du
catalogue
Integration
Services
5-3. Dploiement
du projet SSIS sur
le serveur de
dveloppement
5-4. Les
environnements
5-5. Mise en
production du
projet SSIS
5-6. Planifier un
flux SSIS
Ce chapitre est publi dans le cadre du partenariat entre Developpez et les ditions ENI. Commandez le livre entier.
Ce livre sur la Business Intelligence (BI) avec SQL Server 2012, s'adresse tous les membres d'une quipe dcisionnelle : chef de
projet, architecte, dveloppeur ETL, dveloppeur de rapports, service Aide la Matrise d'Ouvrage (AMO). Du dbutant au technicien
expriment, le lecteur bnficiera d'une approche mtier du dcisionnel.
Commentez
Article lu 3835 fois.
Les deux auteurs
Sbastien FANTINI
Franck GAVAND
L'article
Publi le 25 dcembre 2012
Version PDF Version hors-ligne
ePub, Azw et Mobi
Liens sociaux
1. Dcouverte de SSIS
Au cours des chapitres prcdents, vous avez appris modliser un entrept de donnes. L'ide
tait de faire abstraction des sources de donnes disponibles dans votre socit. Au cours de ce
chapitre, vous allez apprendre et comprendre comment va se raliser la remonte des donnes
du systme source vers un entrept de donnes. La principale difficult est que celui-ci dispose
Accueil ALM Java .NET Dv. Web EDI Programmation SGBD Office Solutions d'entreprise Applications Mobiles Systmes
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 2/42

d'une modlisation dimensionnel le conforme, trs loigne de la structure de vos donnes
actuelles.
Dans la gamme SQL Server, l'outil qui va permettre de raliser le chargement de ces donnes est
SQL Server Integration Services (SSIS).
SSIS a deux aspects :
- Un aspect classique avec une logique de flux de tches, organises par des rgles de
prcdence. Cet aspect est appel Flux de contrles .
- Un aspect plus spcifique au dcisionnel, avec une logique purement E-T-L. Cet aspect est
appel Flux de donnes .
On peut utiliser SSIS sans pour autant faire de l'ETL. Par exemple, vous pouvez vous servir de
SSIS pour excuter des tches de maintenance de bases de donnes, pour lancer une suite de
batch un peu complexe ou pour raliser de la rplication de donnes.
Toutefois, SSIS est aussi un ETL. Le monde de l'ETL a ses codes et ses rgles issues de ces
quinze dernires annes. L'objectif du chapitre, au-del de la comprhension de ce qu'est l'outil
SSIS, est de vous faire dcouvrir certaines de ces pratiques bien spcifiques au monde du
dcisionnel. Des pratiques auxquelles SSIS est assez bien adapt.
Un peu comme pour toute la gamme SQL Server, le dveloppement des flux se fera sous SQL
Server Data Tools (SSDT). On utilisera en revanche SQL Server Management Studio pour
l'administration et l'exploitation. Dcouvrons ensemble ds prsent l'interface de
dveloppement :
- Ouvrez SSDT.
- Cliquez dans la barre de menu sur Fichier - Nouveau - Projet.
Dans la fentre Nouveau projet, slectionnez Projet Integration Services , puis saisissez le
nom et l'emplacement du projet comme ci-dessous :
Le projet s'ouvre par dfaut sur l'onglet Flux de contrle d'un package vide. Un package est un
fichier au format XML l'extension .dtsx .
Sur le ct gauche, ouvrez la bote outils pour dcouvrir les objets du flux de contrle
disponibles.
Bote outils SSIS
Les tches disponibles donnent une assez bonne ide du rle que l'on pourrait faire jouer SSIS
et de ses possibilits : connexion un service web, excution de requte SQL, excution
d'application, criture et excution de scripts, connexion un serveur FTP, tche de traitement
de SSAS, tche de sauvegarde de la base de donnes
Dans un flux dcisionnel, les tches de flux de contrle vont avoir des fonctions de support et
d'orchestration, mais ce ne sont pas ces tches qui vont faire proprement parl le chargement
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 3/42
des donnes.
Attention, dans le monde du dcisionnel, un entrept de donnes ne se charge pas avec de
simples requtes SQL. Vous verrez que les exigences de traabilit et de maintenance de tels
flux sont trop leves pour que des requtes SQL remplissent ce rle correctement.
Le chargement de donnes va se raliser avec la tche de flux de donnes. Dcouvrons cet
aspect du produit :
Glissez et posez la tche de flux de donnes dans la zone de travail centrale.
Ajout d'une tche de flux de donnes
Puis double cliquez sur la tche de flux de donnes pour accder l'onglet Flux de donnes.
Vous noterez que la barre d'outils propose main tenant de nouvelles tches organises autour de
trois thmatiques :
- Les tches Sources
- Les tches de transformation
- Les tches Destinations
La bote outils de l'interface de flux de donnes de SSIS
En faisant glisser la tche de flux de donnes, vous avez bascul l'interface en mode
vritablement ETL. L'acronyme ETL signifie que le flux va tre organis en trois grandes phases :
- La phase E signifie qu'une tche va se connecter une source, pour en Extraire des lignes de
donnes.
- La phase T signifie que ces lignes vont passer par des tches de Transformation pour subir
des tests, des validations ou des modifications.
- La phase L signifie que ces lignes, une fois traites et transformes, vont tre charges (Load
en anglais) dans la base de donnes destination.
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 4/42
Reprsentation schmatique du droulement d'un flux ETL
L'ensemble de ces phases va se drouler uniquement en mmoire, d'o des gains de performance
qui peuvent tre substantiels par rapport au SQL, si on exploite correctement l'outil.
La barre d'outils gauche organise les tches disponibles dans SSIS par ces trois grandes
phases ETL.
Dans la partie suivante, nous raliserons un premier flux ETL pour comprendre le fonctionnement
de SSIS.
2. Raliser son premier flux SSIS
2-1. Raliser le chargement du budget d'un seul site
Pour continuer dcouvrir l'outil SSIS, nous allons raliser le flux qui va permettre de charger les
budgets de vente dans l'entrept de donnes.
Chez Distrisys, les budgets des ventes sont saisis par chaque site directement dans Excel, puis
dposs dans un rpertoire accessible par l'quipe informatique.
Ces fichiers budgets de ventes sont disponibles en tlchargement sur le site des ditions ENI.
Tlchargez les fichiers et dposez-les dans un rpertoire 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 prvisions sont destines.
ans SSIS, au niveau de l'onglet Flux de donnes, glissez cinq nouvelles tches :
- E : Source de fichier Plat(class dans Autres sources) renommer Extraction Fichier
Budget par Site.
- T : Colonne drive 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.
Les cinq nouvelles tch es du flux de donnes
Pour renommer une tche, cliquez dessus avec le bouton droit et slectionnez Renommer
Les croix rouges au niveau de chaque tche signalent des erreurs. C'est normal ce stade,
car nous devons les configurer
Nous allons ensuite configurer chacune de ces tches une une :
Double cliquez sur la tche Extraction Fichier Budget par Site afin d'entrer dans le
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 5/42
configurateur de la tche.
Au niveau du Gestionnaire de connexions de fichiers plats, cliquez sur le bouton Nouveau.
diteur de source de fichier plat
-L'diteur du gestionnaire de connexions de fichiers plats s'ouvre. Nommez la connexion
FichierPlatBudget.
Au niveau de Nom de fichier, l'aide du bouton Parcourir, slectionnez le fichier D001.csv. Le
fichier source contenant une ligne d'entit, cliquez sur l'option Noms de colonne dans la
premire ligne de donnes. Puis continuez la configuration comme l'indique la copie d'cran ci-
dessous :
cran de configuration de la connexion un fichier plat
Une alerte apparat. N'y faites pas attention, car elle disparatra lorsque vous aurez entirement
ralis toute la procdure qui suit.
Toujours dans l'diteur, cliquez sur l'onglet Colonnes. Au niveau du champ Sparateur de
lignes, slectionnez {CR}{LF}. Au niveau du champ Sparateur de colonnes, slectionnez
Point-virgule {;} .
Onglet Colonnes du gestionnaire de connexions
Toujours dans l'diteur, cliquez sur l'onglet Avanc. Pour chaque colonne, configurez la proprit
DataType correspondant au type de champ. Configurez les colonnes de la manire suivante :
Date en entier sign (4bits) [DT_I4]
Produit en chaine [DT_STR]
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 6/42
CA en entier sign (4bits) [DT_I4]
Marge en entier sign (4bits) [DT_I4]
Configuration avance des types des colonnes
SSIS utilise des types de champs universels ne correspondant pas exactement ceux de SQL
Server. La configuration de ces types de champs est extrmement importante dans SSIS, celui-
ci y tant trs sensible.
Le tableau suivant vous donne un aperu non exhaustif des correspondances les plus courantes
:
Type SQL Server Type SSIS
Int [DT_I4]
Numeric(9,2) [DT_NUMERIC]
Varchar [DT_STR] (page de code 1252)
SmallDateTime [DT_DATE]
Terminez la configuration de la connexion fichiers plats en cliquant sur OK.
Vous revenez alors la configuration de la tche Extraction Fichier Budget par Site. Cliquez
sur l'onglet Colonnes, slectionnez et renommez les colonnes de sortie Date en Date_ID et
Produit en ProduitCode.
Cliquez ensuite sur OK.
Vous venez de configurer la premire tche : Extraction Fichier Budget par Site. L'alerte
d'avertissement rouge devrait disparatre
- Tirez le bout de la flche bleue vers la tche suivante Obtenir SiteCode.
Liaison entre deux tches
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 7/42
La flche bleue (dans les flux de donnes, verte dans les flux de contrle) est la flche des
succs et la flche rouge, celle des checs. En glissant la flche bleue vers une autre tche,
vous indiquez o dverser les lignes de donnes en succs.
- Double cliquez sur la tche Obtenir SiteCode pour ouvrir l'diteur de configuration de la tche.
La colonne drive est une des tches les plus courantes du Flux de donnes. Cette tche
permet de modifier une colonne l'aide d'une expression ou d'ajouter une nouvelle colonne au
flux. La zone en haut gauche vous permet de slectionner une colonne du flux courant, une
variable ou un paramtre. Ces notions seront abordes plus loin dans le chapitre.
La zone en haut droite liste l'ensemble des fonctions disponibles au niveau de cette tche.
Vous y trouverez les fonctions les plus courantes : conversion de donnes, fonctions
mathmatiques, oprateurs d'oprations et de conditions, fonctions de chane de caractres, de
date et du traitement de la valeur Null.
Nous allons crer une rgle qui gnre une nouvelle colonne SiteCode et lui affecte
manuellement la valeur "D001" (correspondant au SiteCode du sige social de Distrisys).
Configurez la tche comme ci-dessous :
Vous avez d remarquer que le type de donnes d'une chane de caractres est par dfaut un
type [DT_WSTR] , quivalent au type SQL Server nvarchar . Or, dans la table DimSite, SiteCode
est de type varchar, quivalent au type [DT_STR] de SSIS.
Pour convertir SiteCode en [DT_STR], glissez partir des fonctions de conversion Cast de types
la fonction (DT_STR, Length, code_page) dans Expression. En remplaant Length par une
valeur, vous spcifiez la longueur de la chane de caractres.
En remplaant Code_page par 1252 , vous spcifiez la page de code 1252 (ANSI-Latin I).
Au final, vous devriez avoir dans la colonne Expression :
(DT_STR,10,1252)"D001"
En sortie de l'diteur de tche, l'alerte d'avertissement rouge disparat. Tirez le bout de la flche
bleue vers la tche suivante Recherche Site ID
Maintenant, nous allons nous atteler configurer la prochaine tche : la tche de Recherche.
La tche de Recherche (ou Lookup en anglais) est une tche essentielle et trs caractristique
des processus ETL. Cette tche va tablir une correspondance entre un ou plusieurs champs du
flux courant avec des champs d'une table de rfrence. En sortie, nous pourrons en dduire un
ou plusieurs champs de cette mme table de rfrence.
Pour configurer les dernires tches de Recherche et de chargement de donnes, nous avons
besoin de crer une connexion DistrisysDW.
Pour cela, faites un clic droit dans la zone du Gestionnaire de connexions, situ en bas de
l'cran. Slectionnez Nouvelle connexion OLE DB.
Cliquez sur Nouveau. Configurez la connexion pour vous connecter votre entrept de
donnes, comme le montre la copie d'cran ci-dessous. Au niveau du champ Nom du serveur
spcifiez le nom de votre instance SQL Server et dans Slectionner ou entrer un nom de base de
donnes, slectionnez dans le menu droulant DistrisysDW :
Cliquez sur OK.
- Renommez cette nouvelle connexion DistrisysDW.
Cette connexion est dfinie pour le package courant. Mais nous aurons besoin dans d'autres
packages du projet d'une mme connexion sur la base DistrisysDW. SSIS permet de dfinir des
connexions au niveau du projet, afin qu'elles soient disponibles dans tous les packages du projet.
Cliquez avec le bouton droit sur la connexion DistrisysDW, et slectionnez Convertir en
connexion de projet.
La connexion apparat maintenant dans l'Explorateur de solutions et elle est disponible pour tous
les packages du projet.
Dans le Gestionnaire de connexions, le nom est maintenant prfix par (projet).
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 8/42
Cette phase prparatoire termine, nous allons pouvoir poursuivre la ralisation de notre flux.
Double cliquez maintenant sur la tche Recherche Site ID pour afficher l'diteur de
Transformation de Recherche.
Dans l'exemple suivant, nous allons tablir la correspondance entre le SiteCode du flux courant
avec le DimSite de la table DimProduit. En sortie, nous pourrons rcuprer l'identifiant technique
Site_PK.
Pour cela, cliquez sur l'onglet Connexion.
Slectionnez DistrisysDW comme Gestionnaire de connexions OLE DB.
Ensuite, spcifiez pour le champ Utiliser une table ou une vue, la table DimSite.
Puis cliquez sur l'onglet Colonnes. Mappez SiteCode des Colonnes d'entres disponibles avec le
champ SiteCode des Colonnes de recherche disponibles (table de rfrence). Pour cela,
faites un clic droit sur SiteCode de Colonnes d'entre disponibles et slectionnez modifier les
mappages.
Ensuite, cliquez sur le champ Site_PK de la table de rfrence pour ajouter cette colonne au flux
de donnes. Renommez ce champ Site_ID au niveau de la colonne Alias de sortie. Puis cliquez
sur OK pour sortir et valider les modifications effectues dans l'diteur de tche.
L'alerte d'avertissement rouge disparat. Tirez alors le bout de la flche bleue vers la tche
suivante Recherche Produit ID . Slectionnez la sortie avec correspondance .
Comme ralis prcdemment, configurez la tche Recherche Produit ID . Pour cela, slectionnez
DimProduit en table de rfrence. Puis faites le lien entre ProduitCode du flux d'entre avec
ProduitCode de DimProduit et cliquez sur Produit_PK. Renommez la colonne en sortie Produit_ID.
Tirez le bout de la flche bleue vers la tche suivante Charger FactBudgetVente. Slectionnez
la sortie avec correspondance.
ditez maintenant la tche Charger FactBudgetVente.
Cette tche a pour objectif de raliser l'insertion des lignes dans la table FactBudgetVente de
l'entrept de donnes.
Puis continuez la configuration de la tche comme ci-dessous :
Un message d'erreur apparat. N'y faites pas attention, car il disparatra lorsque vous aurez
entirement ralis toute la procdure qui suit.
En ce qui concerne le chargement d'une table de faits, le mode d'accs aux donnes doit
toujours tre en chargement rapide. De mme, pour obtenir de meilleures performances,
l'option Vrifier les contraintes doit tre dcoche. Normalement, lors du chargement d'une table
de faits, les tches de type Recherche devraient vous assurer de l'existence des cls techniques
pour chaque identifiant de liaison aux tables de dimension.
Pour finir, dans l'onglet Mappages, ralisez les correspondances suivantes :
Date_ID avec DateBudget_FK.
Produit_ID avec Produit_FK.
Site_ID avec Site_FK.
Il n'y a plus d'alerte rouge au niveau des tches du flux. Au final, vous devriez obtenir le flux de
donnes ci-dessous :
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 9/42
Dans l'Explorateur de solutions, renommez votre package DW_BudgetVente.dtsx.
Pour excuter le flux, faites un clic droit n'importe o dans la zone de travail et cliquez sur
Excuter la tche.
Si tout se passe bien, une marque verte apparat dans le coin suprieur droit de la tche et le
nombre de lignes transfres chaque tape s'affiche. Dans notre cas, 120 lignes apparaissent.
Pour sortir du mode excution, cliquez sur le bouton Arrter le mode dbogage dans la barre
d'outils de dbogage.
Un simple traitement du cube vous permet de rendre ces donnes disponibles.
Dans SSMS, connectez-vous Analysis Services. Traitez le cube et ralisez un tableau crois
dynamique avec les donnes nouvellement insres.
Vous venez de raliser votre premier flux ETL avec SSIS. Dans la prochaine partie, nous allons
charger l'ensemble des budgets pour illustrer l'utilisation de l'onglet Flux de contrle.
2.2. Charger les donnes de budget partir de plusieurs
fichiers Excel
Dans cette partie, nous allons complter le flux prcdent afin d'illustrer l' utilisation de l'onglet
et des tches de flux de contrle, et ainsi bien diffrencier l'utilisation de ces deux onglets.
Tout d'abord, afin de pouvoir lancer le flux plusieurs fois lors du dveloppement, nous allons
ajouter une tche de flux de contrle qui efface, avant chaque excution, toutes les lignes de
l'anne 2014 de la table FactBudgetVente.
- Pour cela, dans SSIS, allez sur l'onglet Flux de contrle et glissez la tche d'Excution de
requtes SQL. Renommez la tche Efface les donnes de budget de 2014.
- ditez la tche. Au niveau de la proprit Connection, slectionnez DistrisysDW. Au niveau
de la proprit SQL Statement, tapez la requte suivante :

Slectionnez
DELETE FROM FactBudgetVente WHERE DateBudget_FK
Tirez la flche verte vers la tche de flux de donnes que vous renommerez : Chargement du
budget d'un Site.
- Excutez le flux en faisant un clic droit sur le package au niveau de l'Explorateur de solutions.
Actuellement, le flux ne charge que le budget du site D001 (Sige social). La finalit serait que le
flux parcourt le rpertoire, o sont dposs les fichiers de budget, puis de charger ces fichiers
les uns aprs les autres. Pour raliser cela, nous allons utiliser la tche Conteneur de boucle
Foreach.
- Glissez la tche Conteneur de boucle Foreach, puis renommez-la : Lire les fichiers Site
dans un rpertoire.
- Supprimez le lien entre les tches Efface les donnes de budget de 2014 et Chargement
du budget d'un Site .
- Glissez la tche Chargement du budget d'un Site dans le primtre du For Each.
- Entrez dans le configurateur de la tche de conteneur de boucle For Each.
- Configurez les proprits de l'onglet Collection :
numrateur : Enumrateur Foreach File.
Dossier : spcifiez le rpertoire o sont stocks vos fichiers CSV.
Fichiers : D*.csv , afin de rcuprer uniquement les fichiers de site au format .csv.
Rcuprez le nom de fichier : Complet, afin de rcuprer le chemin complet d'accs aux
fichiers.
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 10/42
Configuration de la boucle Foreach dans le cas du parcours de fich iers dans un
rpertoire
Dans l'onglet Mappage de variables, crez une nouvelle variable CheminCompletFichier avec les
proprits suivantes :
Conteneur : DWBudgetVente
Nom : CheminCompletFichier
Espace de noms : User
Type de valeur : string
Valeur : c:\SSIS\D001.csv (spcifiez le chemin complet de votre fichier csv afin d'initialiser
le contenu de la variable).
- Puis mappez cette variable sur l'index 0, comme ci-dessous :
chaque itration de la boucle, la variable User::CheminCompletFichier va prendre la valeur
du chemin d'accs au fichier de budget (nom du fichier avec extension incluse).
Nous allons donc dynamiser la valeur du chemin d'accs de la connexion FichierPlatBudget l'aide
de cette nouvelle variable.
Pour cela, dans le Gestionnaire de connexions en bas de la zone de travail de SSIS, faites un clic
droit sur FichierPlatBudget afin d'afficher les proprits de la connexion.
Dans les proprits, cherchez la proprit Expressions puis cliquez sur le bouton pour afficher
l'diteur.
Dans l'diteur d'expressions de la proprit, affectez la variable
User::CheminCompletFichier la proprit ConnectionString, comme ci-dessous :
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 11/42
Ainsi la proprit ConnectionString de la connexion FichierPlatBudget va prendre la valeur de
la variable User::CheminCompletFichier chaque itration de la boucle.
Pour afficher la liste des variables et pour pouvoir les modifier ou en crer d'autres, cliquez
dans la barre de menu sur SSIS>>variables.
Dans le Gestionnaire de connexions, notez maintenant le signe ct du nom qui signale
l'utilisation d'une expression.
Pour finir, nous devons rcuprer le SiteCode contenu dans le nom du fichier, et donc dans le
nom de la variable.
Basculez dans l'onglet Flux de donnes et modifiez la tche Obtenir SiteCode, pour affecter
la colonne SiteCode l'expression suivante :

Slectionnez
(DT_STR,10,1252)SUBSTRING(RIGHT(@[User::CheminCompletFichier],8),1,4)
Le flux de contrle au final devrait ressembler ceci :
Excutez le flux pour vrifier que tout fonctionne correctement. La tche de flux de chargement
du budget va s'excuter autant de fois qu'il y aura de fichiers csv de budget.
Cet exemple concret de l'utilisation de SSIS vous a permis de comprendre la diffrence
d'utilisation des deux facettes de SSIS. En utilisation dcisionnelle :
- Le flux de contrle permet de piloter l'excution d'un flux de donnes et doit, autant que
possible, ne pas avoir d'influence directe sur les donnes.
- Le flux de donnes ralise l'extraction, le traitement et le chargement. Il n'a d'influence que sur
les donnes elles-mmes.
3. Dvelopper des flux ET L pour le dcisionnel
3-1. Droulement de l'excution d'un processus ETL
Dans cette partie, nous allons vous prsenter les diffrents types de flux, que vous serez en
mesure de rencontrer pour alimenter votre entrept de donnes.
Dans les faits, les donnes ne vont pas transiter directement des systmes sources vers
l'entrept de donnes. Les donnes vont transiter par au moins un palier : le sas de donnes.
Dans notre cas, nous appellerons cette base DistrisysSA (SA en anglais signifiant Staging Area ).
Le chargement va se faire suivant ce schma de principe :
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 12/42
Architecture de chargement de donnes
La base SQL MDS fait rfrence aux bases de donnes de rfrentiel du produit SQL Server
Master Data Services. Nous prsenterons cet outil dans le chapitre suivant Grer les donnes de
rfrence avec Master Data Services.
Le SA a plusieurs rles :
- Rapatrier les informations manant de sources multiples, en garantissant qu'il n'y ait pas de
pertes de donnes lors de ce processus.
La base SQL MDS fait rfrence aux bases de donnes de rfrentiel du produit SQL Server
Master Data Services. Nous prsenterons cet outil dans le chapitre suivant Grer les donnes de
rfrence avec Master Data Services.
Le SA a plusieurs rles :
- Rapatrier les informations manant de sources multiples, en garantissant qu'il n'y ait pas de
pertes de donnes lors de ce processus
- Faire une zone mmoire tampon d'un tat brut de la source un instant pass et ainsi, faciliter
la mise en uvre d'un processus de reprise de donnes, que nous verrons dans ce chapitre la
section L'audit des flux ETL.
La mise en place d'un SA est une tape indispensable la bonne mise en uvre de vos flux ETL.
Nous rpartirons les rles de la manire suivante :
- Les flux entre les systmes sources et le SA seront des flux de copie de donnes (EL). Nous
viterons donc, dans le SA, toute contrainte d'intgrit, et dans les flux, toute rgle de gestion
et autre requte avec jointure interne, qui peut provoquer une dperdition de donnes sources.
Les tables du SA ne sont pas soumises une modlisation. Le SA est simplement but pratique
afin de simplifier la seconde tape.
- Les flux entre le SA et le DW seront de vritables flux ETL. Nous utiliserons alors pleinement
l'onglet Flux de donnes de SSIS ainsi que les tches de transformation. C'est cette tape-
ci, que nous raliserons un audit prcis de nos flux.
Le droulement du flux dcisionnel va donc se drouler ainsi :
Droulement de l'excution des flux dcisionnels
En dcisionnel, il existe donc trois sortes de flux diffrents :
- Les flux de copie des donnes sources vers le SA.
- Les flux de gestion et de mise jour des dimensions du DW.
- Les flux de chargement de s tables de faits du DW.
Dans les parties qui vont suivre, nous allons illustrer la ralisation de chacun de ces flux.
3-2. Raliser un flux pour charger le sas de donnes
Lors de cette partie, nous allons tudier un flux permettant de copier des donnes de facturation
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 13/42
vers une base de donnes DistrisysSA.
Dans notre tude de cas, Distrisys dispose d'un systme de gestion par site. Pour raliser une
copie complte des donnes, notre flux devra donc se connecter successivement chacun de
ces sites.
Afin de raliser, de suivre et d'excuter le flux prsent dans ce chapitre, tlchargez sur le site
des ditions ENI les lments suivants :
Les fichiers de sauvegarde de base de donnes :
DistrisysERP_SiegeSocial.bak
DistrisysERP_AgenceSud.bak
DistrisysERP_AgenceOuest.bak
DistrisysSA.bak
La solution SSIS :
- Rpertoire DistrisysETL
Restaurez les trois bases de donnes.
Vous pouvez vous reporter au chapitre Intallation et dcouverte des outils SQL Server -
Restauration d'une base de donnes pour les procdures de restauration d'une base SQL Server.
Dans SSMS, vous devriez alors avoir les cinq bases de donnes suivantes :
La base de donnes DistrisysSA contient les trois tables suivantes :
Facture : le contenu des tables sources, concernant les donnes de facturation, sera
copi dans cette table.
Produit : le contenu des tables sources, contenant les donnes concernant les produits,
sera copi dans cette table.
ListeSystemeSource : cette table liste les sites auxquels nous souhaitons nous
connecter, ainsi que les chanes de connexion de chacune des bases de donnes de ces
sites.
Par dfaut, les chanes de connexion existantes font rfrence un serveur et une instance SQL
Server. Pensez remplacer ces valeurs par le nom de votre instance SQL Server.
Nous allons maintenant ouvrir le package contenant le flux tudier.
Dans SSIS, ouvrez la solution DistrisysETL prcdemment tlcharge et ouvrez le package
SA_Facture.dtsx.
L'onglet Flux de contrle du package SA_Facture.dtsx se prsente ainsi :
Flux de contrle du flux SA_Facture.dtsx
Ce package dispose des variables suivantes :
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 14/42
Liste des variables du flux SA_Facture.dtsx
Le flux fonctionne ainsi :
La premire tche rinitialise la table Facture de la base de donnes DistrisysSA.
La seconde tche, Lire la Table DistrisysAuditListeSystemeSource , affecte le contenu
de la table ListeSystemeSource dans la variable de type Objet du mme nom
Pour faire cela, la tche Excution SQL est configure ainsi :
La requte excute est la suivante :

Slectionnez
SELECT [Site],[SiteCode],[ConnexionSource] FROM
[ListeSystemeSource] Where Valide='O'
La section Jeu de rsultats est configure ainsi :
3. La troisime tche Pour chaque Site, de type Conteneur de boucle Foreach, parcourt la
variable rcupre prcdemment, pour lancer chaque itration le flux de donnes Copie de
Facture de la source.
La tche Pour chaque Site est configure ainsi :
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 15/42
chaque itration, les variables User::SiteNom, User::SiteCode et
User::ChaineConnexionSource viennent rcuprer les valeurs des champs de la ligne
courante, parcourues par la boucle. Pour cela, la section Mappage de variables est configure
ainsi :
La colonne Index correspond l'ordre des colonnes dans la requte de la tche Lire la Table
DistrisysAuditListeSystemeSource dfinie prcdemment.
4. Enfin, la tche de flux de donnes effectue la copie des donnes de facturation du systme
source courant vers la table Facture de DistrisysSA.
Le flux de donnes est trs simple, on vite autant que possible toute modification de donnes.
La colonne drive Obtenir SiteCode ajoute simplement au flux le contenu de la variable
User::SiteCode identifiant le site courant.
La connexion la source de donnes se fait par la configuration de la connexion DistrisysERP.
chaque itration, DistrisysERP rcupre la valeur de la chane de connexion de la variable
User::ChaineConnexionSource. Cette configuration est du m me ordre que celui ralis dans
le flux de chargement du budget.
Pour que le flux fonctionne, modifiez les chanes de connexions spcifies dans la table
ListeSystemeSource, ainsi que celles de DistrisysSA, pour les adapter votre environnement
serveur.
Excutez le flux pour suivre et observer le comportement du package. Ce flux n'est qu'une
illustration de flux de rcupration de donnes. Ce type de flux peut prendre des formes assez
diverses. l'oppos, les flux de chargement des dimensions et des tables de faits sont des flux
trs strotyps. Leurs formes sont assez transposables d'une table une autre, et d'un
systme l'autre.
3-3. Raliser un flux pour charger une dimension
3-3-1. Cas d'une dimension standard
Nous allons prsent tudier un flux de chargement et de mise jour de la table de dimension
Produit. Sauf exception, tous les flux de charge ment et de mise jour des dimensions sont
raliss sur le modle standard qui va suivre ou sur celui propos dans la partie suivante. Nous
considrerons que le flux qui charge la table Produit, partir des systmes sources a t ralis.
Nous disposons alors des donnes Produit courantes dans la table Produit de la base de donnes
DistrisysSA.
La socit Distrisys prvoit de mettre en place un rfrentiel Produit. Cela sera effectu au
chapitre suivant Grer les donnes de rfrence avec Master Data Services. Si ce travail de
rfrentiel avait t pralablement ralis, cette table Produit de la base DistrisysSA pourrait
tre avantageusement remplace par une vue de l'entit Produit du Master Data.
Le flux que nous allons tudier va rcuprer les donnes de cette table Produit de DistrisysSA.
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 16/42
Puis il va venir comparer ces donnes avec le contenu de DimProduit de DistrisysDW.
Dans la plupart des cas, les flux de dimensions doivent vrifier :
- S'il y a un nouveau membre ajouter dans la dimension.
- S'il y a eu une modification dans une des proprits d'un lment 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 verrons cela dans ce chapitre la section L'audit des flux ETL.
Commenons la procdure.
Ouvrez le package DW_Dimproduit.dtsx.
Le flux de contrle ne contient qu'une tche de flux de donnes. Cliquez sur l'onglet Flux
de donnes.
Flux ETL de mise jour de la dimension Produit
Celle de la table Produit de DistrisysSA.
Celle de la table DimProduit de DistrisysDW.
La tche de colonne drive Epurer les chaines de caractres n'est l que pour nettoyer les
chanes de caractres de tout caractre d'espacement droite et gauche, pouvant altrer la
transformation qui va suivre.
L'ide du flux est de venir comparer ces deux sources de donnes, en ralisant une jointure
externe gauche en faveur des donnes de Distrisy sSA, la manire d'un LEFT OUTER JOIN en
SQL.
Les tches de tri en entre de la tche de fusion sont ncessaires, d'une part pour des
considrations de performance, d'autre part parce que c'est l'ordre de tri qui dtermine la cl de
jointure de la tche de fusion.
Nous rcuprons en sortie de la tche de fusion les champs des deux sources de donnes.
La tche Jointure de fusion externe gauche est configure ainsi :
En sortie de fusion, la tche Fractionnement conditionnel, nomme Identification des
nouveaux produits et des 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
ncessaire.
S'il s'agit d'une nouvelle ligne, une tche de Destination OLE DB se charge de faire l'ajout dans
la table DimProduit de DistrisysDW.
Il est important de laisser la cl produit_PK tre gre par SQL Server, en vrifiant bien qu'elle
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 17/42
soit en incrmentation automatique.
S'il s'agit d'une modification, les lignes sont mises jour l'aide d'une tche Commande OLE
DB.
La requte est paramtre, c'est--dire qu'elle est fonction de paramtres (identifis par un ?)
que nous venons mapper sur des champs disponibles dans le flux.
La requte excute est la suivante :

Slectionnez
UPDATE [DimProduit]
SET [Produit] = ?,[SousFamilleCode] = ?,
[SousFamille] = ?,[FamilleCode] = ?,[Famille] = ?
WHERE [ProduitCode] = ?
Le mappage des paramtres de la requte peut tre visualis en double cliquant sur la tche
Mise jour des produits modifis puis sur l'onglet Mappage de colonnes:
noter que l'ordre des paramtres est fonction de leur apparition dans la requte SQL.
Ralisons la procdure suivante afin de tester le fonctionnement du flux :
Modifiez les connexions DistrisysSA et DistrisysDW afin de les adapter votre
environnetment.
Lancez le flux en cliquant sur Excuter le package. Assurez-vous qu'au premier
lancement, le flux ajoute une nouvelle ligne et met jour une seconde ligne.
Servez-vous de SSMS, afin de constater les modifications dans la table DimProduit avant
et aprs l'excution du flux.
Avec SSMS, faites des modifications manuelles dans la table Produit DistrisysSA et
relancez le flux. Vrifiez que vos modifications sont bien prises en compte.
Nous venons de voir comment raliser un flux ETL de mise jour de dimensions. Ce flux est
typique; c'est--dire que la plupart des flux ETL de mise jour des dimensions auront ce
formalisme. Nanmoins, il existe des cas particuliers. C'est ce que nous verrons dans la partie
suivante.
3-3-2. Cas d'une dimension en SCD
Dans certains cas, la modification des donnes est trop brutale pour l'utilisateur. Il faut alors
grer les modifications dans la dimension de manire plus fine.
Prenons un exemple, chez Distrisys, la vente de cafetires bat des records en prenant une part
de plus en plus consquente dans le CA de la socit.
La stratgie de l'entreprise est donc de dvelopper la vente de cafetires. Une nouvelle
organisation commerciale est dcide et un chef produit va tre nomm cet effet.
Cafetire est aujourd'hui une sous-famille de l'activit Petit Mnager. Distrisys souhaite que
Cafetire devienne une famille Produit au mme titre que Grand Mnager et Petit Mnager .
Si en mars l'quipe dcisionnelle procde, comme le fait le flux prcdent, l'crasement du code
famille Petit Mnager par un nouveau code Cafetire, nous ne rpondons pas au besoin de la
direction. Nous perdons la vision de l'historique. Nous entrons alors dans un cas de configuration
dit de la dimension volution lente.
Le concept de dimension variation lente ou SCD ( Slowly Changing Dimension) a t dfini par
Ralph Kimball, le pre fondateur de l'entrept de donnes.
Ralph Kimball identifie plusieurs types de modifications au niveau de chaque champ de donnes
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 crase par la nouvelle valeur. C' est le cas que nous avons mis
en uvre au flux prcdent avec les champs Produit, SousFamilleCode, Sous Famille, FamilleCode
et Famille.
- Enfin, il existe le type 2 (attribut d'historique) qui suggre que les modifications du champ
considr n'impactent pas les valeurs passes mais seulement les valeurs futures.
Concrtement, les lignes de faits dj charges continueront tre affectes l'ancien membre
de la dimension. Les futures lignes de faits seront affectes un nouveau membre de la
dimension comportant les mmes caractristiques que le prcdent, l'exception prs du champ
de type 2 modifi.
Prenons l'exemple de notre dimension DimProduit actuelle :
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 18/42
Nous ajoutons une colonne valide. La valeur 1 signifie que le produit est en activit. Une valeur
0, signifie qu'il n'est plus en activit.
Les ventes de cafetires, dans la table de faits des factures, vont tre affectes la cl
technique Produit_PK 8, 10 ou 11.
Imaginons que nous sommes le 1 er mai. La cration de la nouvelle Famille Cafetire a lieu. Le
champ FamilleCode tant de type 2, nous devrons avoir la nouvelle table DimProduit suivante :
Les lignes, avec les anciennes cls techniques identifiant les cafetires, les Produit_PK 8,10 et
11, ont t invalides.
En revanche, trois nouvelles lignes sont cres en remplacement des trois prcdentes : il s'agit
des lignes 12, 13 et 14, et ces nouvelles lignes sont valides et contiennent le mme ProduitCode
que les anciennes lignes.
Ainsi, les ventes de cafetires, compter de cette date, vont tre affectes dans la table de
faits des factures aux nouvelles cls Produit_PK 12, 13 et 14.
Les valeurs passes de la table de faits n'ont de ce fait pas t affectes par ce changement.
SSIS nous aide mettre en uvre le SCD. Pour cela, nous disposons d'une tche d'assistance,
la tche Dimension variation lente. Ralisons maintenant le flux de chargement des produits
utilisant le SCD.
- Si vous ne souhaitez pas le raliser vous-mme, le package
DW_DimProduit_Avec_SCD.dtsx est disponible dans la solution DistrisysETL prcdemment
tlcharge.
Avant toute chose, dans SSMS, modifiez la structure de la table DimProduit en
ajoutant une nouvelle colonne Valide de type bit.
Spcifiez une valeur par dfaut de valide True.
Modifiez toutes les lignes de DimProduit pour que le champ Valide soit True.
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 19/42
Dans le projet SSIS, crez un nouveau Package DW_DimProduit_avec_SCD.dtsx.
Crez les deux connexions sources DistrisysSA et DistrisysDW.
Dans le flux de contrle, glissez une tche de flux de donnes.
Puis, dans Flux de donnes, glissez une tche Source OLE DB se connectant
DistrisysSA et la table Produit.
Vous pouvez galement glisser une tche Colonne drive, pour faire le nettoyage des
champs de type chanes de ca ractres (cela est facultatif).
Glissez ensuite la tche Dimension variation lente.
Connectez la tche de colonne drive la tche Dimension variation lente.
Vous avez alors les trois tches suivantes :
Puis double cliquez pour modifier la tche Dimension variation lente. Un assistant
s'ouvre, cliquez sur Suivant.
Identifiez l'cran Slectionner une table et des cls de dimension, la connexion
Distri-sysDW , la table DimProduit et slectionnez ProduitCode comme tant la cl
d'entreprise l'aide du menu droulant.
Dans la Colonnes d'entre, slectionnez les mmes noms que ceux apparaissant dans
Colonnes de dimension. Puis cliquez sur le bouton Suivant.
Le SCD fait apparatre avec vidence la ncessit d'identifier des cls techniques diffrentes des
cls d'entreprise. Dans notre cas, Produit_PK est une cl technique et ProduitCode est la cl
d'entreprise.
Au niveau de l'interface, Colonne de dimensions variation lente, slectionnez le type
d'attribut et procdez comme ce qui est indiqu ci-dessous.
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 20/42
Dans notre cas, nous spcifions les champs SousFamilleCode, SousFamille, Famille et
Produit en attribut de type 1 : Modification d'attribut.
En revanche, le champ FamilleCode est en type 2 : attribut d'historique.
- l'cran Options des attributs fixes et variables, cliquez sur Suivant.
- l'cran Options des attributs d'historique, slectionnez l'option Utiliser une seule
colonne pour afficher les enregistrements actifs et expirs, puis configurez les champs comme
ci-dessous :
SSIS intgre plusieurs modes de gestion des lignes valides et obsoltes : soit la gestion par un
champ unique (le champ Valide dans notre cas), soit la gestion par encadrement de dates . Un
champ identifie alors la date de dbut de validit et un autre la date de fin de validit.
Sur l'cran Membres de la dimension infrs, dcochez la case Activer la prise en charge des
membres infrs.
La gestion des membres inconnus ou des membres n/a est une gestion que je vous conseille de
prendre en charge vous-mme au sein de votre flux. C'est un aspect pris en charge dans la
gestion d'audit.
Sur l'cran Fin de l'assistant Dimension variation lente, cliquez sur Terminer.
En fin d'assistant, SSIS gnre alors les tches correspondantes au comportement attendu par
le SCD.
Pour tester, faites des modifications avec SSMS dans la table Produit de DistrisysSA.
- Par exemple affectez les produits de type cafetire une nouvelle FamilleCode C et Famille
Cafetire.
- Puis excutez le flux.
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 21/42
Fin d'excution d'un flux de mise jo ur d'une dimension variation lente
Table DimProduit, avant excution du SCD :
Table DimProduit, aprs excution du SCD :
Nous obtenons exactement le comportement attendu initialement. Le SCD a fonctionn en crant
trois nouveaux membres valides, et en invalidant les trois membres remplacs.
- Attention, dans la ralit la tche SCD doit tre rflchie au moment de la conception de
l'entrept de donnes et de la conception des flux. Le SCD doit tre mis en uvre uniquement
dans le cas de dimension de taille raisonnable, soit environ moins de 20000 lignes et uniquement
dans le cas de champs ne variant pas beaucoup, ou du moins lentement. Dans le cas de
dimensions larges ou de dimensions variation rapide, comme par exemple la dimension Abonn
d'un oprateur tlphonique ou la dimension Produit en grande distribution, nous utiliserons plutt
le flux prcdent et grerons l'historisation avec un autre procd qui affecte directement la
modlisation du DW : le principe de mini-dimension.
Nous rappelons que ce flux est incomplet sans la mise en uvre de l'audit.
3-4. Raliser un flux pour charger une table de faits
Nous allons prsent raliser le flux de chargement des tables de faits FactFacture et
FactFactureEntete de l'entrept de donnes DistrisysDW.
Dans tous les cas, un flux de chargement de tables de faits a les caractristiques suivantes :
Il fait suite au chargement et la mise jour de toutes les tables de dimension.
Il doit s'assurer, avant l'insertion, des contraintes d'intgrit entre la table de faits et ses
dimensions.
Il se charge uniquement en insertion rapide.
Il possde toutes les caractristiques d'un flux ETL : Extraction simple d'une source (pas
de grandes requtes SQL), puis passage par des tches de transformations et d'valuation
des donnes, et enfin chargement rapide des donnes.
Nous ne ferons jamais de mise jour de donnes par requte SQL update sur une table de faits.
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 22/42
Si vous devez en arriver de telles pratiques, rvisez la stratgie ou la conception de vos flux, il
y a forcment une meilleure solution.
Dcrivons maintenant le flux de chargement des tables de faits FactFacture et
FactFactureEntete.
Le package Dw_FactFacture.dtsx, il lustrant ce processus et dtaill dans cette partie, est
disponible dans la solution Distrisys ETL prcdemment tlcharge. Reportez-vous y pour
obtenir des dtails complmentaires.
- Attention, ce flux est brut, c'est--dire qu'il n'intgre pas encore la gestion des erreurs et des
audits. Ce flux est donc incomplet mais suffisant pour en comprendre son essence.
Tout d'abord, ces deux tables de faits disposent en ralit d'une source unique : la table Facture
du sas de donnes DistrisysSA. Le chargement de ses tables se fera alors partir de la mme
extraction de donnes.
La tche Nettoyage des chanes de caractres, de type colonne drive, s'assure que des
espaces, droite ou gauche de la chane de caractres identifiant notamment un code, ne
viennent pas polluer la comprhension de la donne.
Ensuite, le flux va enchaner une chane de tches Recherche, visant traduire la date de
facturation ainsi que les codes produit, client et site en cl technique.
Cette succession de tches Recherche constitue la meilleure vrification des contraintes
d'intgrit entre tables de faits et de dimensions.
Au niveau de la tche Recherche DateFacturation_FK, la configuration est la suivante :
- La table de rfrence est DimTemps.
- Le mapping est ralis entre le champ DateFacturation en provenance de la source de
donnes et le champ Date de la table de la dimension DimTemps.
- Le champ Temps_PK, renomm Datefacturation_FK , est en sortie de correspondance.
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 23/42
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 assure par la tche Multidiffusion.
Avant de charger FactFacture, une dernire tche de type Colonne drive Calculer la Marge
et le PrixCatalogue, assure la cration de deux champs manquants :
Puis la tche effectue le chargement rapide vers la destination :
- L'option Vrifier les contraintes est dsactive, puisque les tches de Recherche s'en sont
dj assures. Le chargement n'en sera que plus rapide.
La disponibilit d'un grand nombre de disques durs est assez primordiale dans une architecture
physique dcisionnelle. Si les filegroup des tables Factfacture et FactFactureEntete taient sur
des disques physiques diffrents, le chargement n'en serait que moins risqu et plus rapide. Tout
dpend ensuite du volume de donnes et du temps consenti au chargement ETL...
Le deuxime flux s'oriente vers une tche de type Agrgation qui joue en fait le rle d'un Group
By en SQL. Cette tche va regrouper les donnes suivant les colonnes DateFacturation_FK,
Site_FK et Client_FK et compter le nombre de lignes distinctes Produit_PK, pour en dduire le
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 24/42
nombre d'articles diffrents que comprend la facture.
La dernire tche de type Destination OLE DB procde au chargement de FactFactureEntete sur
les mmes bases de configuration que FactFacture : chargement rapide et pas de vrifications
des contraintes d'intgrit.
Nous venons de raliser le flux de chargement de nos tables de faits FactFacture et
FactFactureEntete. Mais ces flux ne sont pas achevs sans une gestion fine des erreurs et un
audit du droulement du flux.
la prochaine tape, vous allez dcouvrir les quelques concepts lis l'audit des flux ETL.
4. L'audit des flux ETL
4-1. Les objectifs de l'audit de flux ETL
Les exemples qui ont t prsents prcdemment sont des flux inachevs, dans le sens o ses
flux n'intgrent pas la gestion d'erreurs et l'audit du droulement du flux.
Par exprience, l'audit de processus ETL, souvent appel tort gestion des rejets, gnre soit
beaucoup de fausses croyances, soit beaucoup de faux espoirs. Dans la plupart des cas, elle est
mme mise de ct. Une des principales ides reues consiste faire croire qu'un logiciel ou
qu'un package miracle permet de mieux grer la qualit des donnes. 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
nanmoins 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 rpondre de
nombreuses questions. Cela signifie que suivant le contexte, on va rendre plus performant l'audit
sur certains points plutt que sur d'autres.
Les objectifs poursuivis par l'audit des processus ETL sont :
- L'audit de flux ETL permet d'informer du droulement du processus ETL :
Le processus ETL a-t-il eu lieu ? Est-il termin ? A-t-il termin avec succs ? Quelle a t sa
dure ?
- L'audit de flux ETL permet de traiter et d'alerter sur les erreurs rencontres :
Quelle est la nature des erreurs rencontres ? Combien y en a-t-il ? Quelles sont-elles ? Quelles
sont les origines des problmes ? Combien dnombre-t-on d'origines diffrentes ? Quelles sont les
lignes concernes ? Combien de lignes sont concernes ?
- L'audit de flux ETL permet de suivre l'volution de la performance du processus ETL :
Mon flux se fiabilise-t-il ? Gnre-t-il de moins en moins d'erreurs ? Comment les dures
d'excution des diffrents flux voluent-elles ?
- En cas d'erreur rebours, sur une excution de flux, l'audit de flux ETL doit permettre
d'identifier les lignes concernes.
Un bon processus d'audit doit pouvoir rpondre toutes ces questions et peut-tre mme
d'autres, plus spcifiques votre organisation.
Les matres mots de l'audit ETL sont traabilit et communication :
Traabilit, vous l'aurez compris, pour rpondre aux questions d'enqutes classiques de
type Qui ? Quoi ? O ? Quand ? Comment ? Pourquoi ?
Communication, car l'audit de processus ETL est intimement li aux problmatiques
dcisionnelles et donc aux prises de dcision.
La dlivrance de l'information ne vaut que si on est capable d'en estimer ou d'en valuer son
niveau de fiabilit.
Le systme d'audit va tre cette source d'informations. Les indicateurs issus du systme d'audit
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 25/42
ont la mme valeur que les indicateurs mtier. Et ces donnes prsentes aux dcideurs vont
participer directement la prise de dcision.
4-2. Conception d'un systme d'audit de flux
Avant de raliser le systme d'au dit de flux, il est ncessaire de penser la stratgie de gestion
d'erreurs.
Notre exprience nous a montr qu'il existe trois grandes stratgies ou scnarios de gestion
d'erreurs, qui impliquent chacun des conceptions et des approches compltement diffrentes.
Ces stratgies sont les suivantes :
La publication garantie des donnes
La stratgie de chargement de 100 % des donnes, 100 % fiables.
Cette stratgie suggre que nous prsentons des donnes aux utilisateurs qui sont compltes et
qui sont compltement vrifies, sans codification inconnue. Cette stratgie idale implique que
les informations fournies ne sont plus forcment de premire fracheur. C'est la stratgie que
retiennent le plus souvent les services de pilotage lorsqu'ils ralisent une publication mensuelle
des donnes d'activit des mois couls; la publication tant ralise plusieurs jours aprs la fin
du mois.
L'utilisation d'une base de rejets
La stratgie de chargement de x% des donnes, 100 % fiables.
Cette stratgie suggre le rejet des lignes en erreurs et leur rechargement par l'quipe
informatique aprs correction. C'est la stratgie prfre mise en uvre dans les systmes
jeunes. Mais c'est aussi celle qui, au final, est la plus difficile entretenir moyen et long terme,
car elle implique deux choses : d'une part, que le systme ne rejette que les lignes ayant un
problme technique, ce qui est loin d'tre la totalit des problmes rencontrs et d'autre part
parce qu'avec la croissance du systme dcisionnel, le temps pass par l'quipe informatique la
lecture des rejets, leurs corrections et leur rechargement prend trop de temps et d'nergie.
Au final, elle est trs peu utilise dans les systmes matures.
Systme avec reprise automatique d'erreurs
La stratgie de chargement de 100% des donnes, x % fiable.
Cette stratgie suggre que nous chargions l'ensemble des donnes, sans rejets, mais que nous
acceptions et nous communiquions en consquence sur la fiabilit des donnes qui ont t
charges. Pour tre efficace, ce systme doit communiquer suffisamment pour rendre les
utilisateurs acteurs de la correction de leurs donnes. Dans ce systme, l'quipe informatique
doit dlguer autant que possible cette tche de correction d'erreurs. Leur tche doit se
cantonner rendre le systme suffisamment lisible pour que ce soit les utilisateurs eux-mmes
qui apportent les corrections ncessaires. Enfin le systme doit tre suffisamment intelligent pour
se reprendre de lui-mme : il doit pouvoir revenir sur les flux prcdemment excuts et donc sur
les donnes prcdemment charges avec erreurs. En esprant que les donnes ont bien
videmment t corriges dans les systmes oprationnels ou dans les rfrentiels de donnes.
Nous pouvons faire la synthse de ces diffrentes stratgies dans le tableau ci-dessous :
Stratgie
de
gestion
d'erreurs
Donnes
du DW
Fiabilit
des
donnes
du DW
Avantages Inconvnients Usages
Publication
garantie
des
donnes
100%
(compltes)
100%
(garanties)
Trs bonne
visibilit
pour le
dcideur
final qui
peut s'y
fier.
Donnes qui ne
sont
gnralement
pas trs
fraches. De
quelques jours
au mieux
Usage rserv
gnralement
des services
mtier dans le
cadre de
l'utilisation de
magasins de
donnes (hors
du primtre
de l'ouvrage).
Utilisation
d'une base
de rejets x
Utilisation
d'une base
de rejets
Utilisation
d'une base
de rejets
x%
(partielles)
100%
(garanties
sans
erreurs
techniques)
Fracheur
des
donnes.
Aucune
valuation de
la qualit des
donnes. Les
donnes sont
potentiellement
fausses
Pour une mise
en uvre
rapide, une
dmonstration.
Stratgie
de gestion
d'erreurs
Donnes
du DW
x%
Fiabilit
des
donnes
du DW
Avantages Inconvnients Usages
Fracheur
des
donnes. la
plupart des
donnes en
erreur sont
Systme
penser et
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 26/42
Stratgie de
reprise
automatique
d'erreurs
100%
(compltes)
x%
(partielles)
visibles, car
marqu
d'un
membre
inconnu. Ce
sont les
utilisateurs
qui
corrigent
leurs
donnes et
le systme
se reprend
de lui-
mme.
concevoir la
base. Pour tre
efficace le
systme doit
tre
communiquant
et offrir
rellement la
possibilit aux
utilisateurs de
corriger leurs
donnes.
Usage
prfr
mettre
en place
dans le
cadre
d'un
entrept
de
donnes
Dans notre cas, nous allons opter pour la stratgie de reprise automatique d'erreurs. Nous allons
voir dans la suite du chapitre comment mettre en uvre une telle stratgie.
Concrtement, le systme d'audit va tre organis autour de deux tables principales :
AuditFlux : cette table va faire le bilan de l'excution d'un flux en particulier.
AuditEvenement : cette table va enregistrer les diffrents vnements survenant lors de
l'excution du flux.
Le systme de reprise de donnes va tre le suivant :
- chaque dbut 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, ajoutes prcdemment par ce flux, et
va rejouer le flux sur la mme plage de dates, en esprant que les donnes d'erreurs
prcdemment remontes auront t alors corriges.
- Une fois tous les flux rejous, il va ajouter et initialiser une no uvelle ligne dans la table
AuditFlux.
- Puis le flux du jour va s'excuter normalement en chargeant les donnes de la plage de dates
du jour.
- Lors de l'excution du flux des vnements vont s'ajouter dans la table AuditEvenement : des
vnements d'informations (nb de lignes extraites) et des vnements d'erreurs (code non
trouv, valeur impossible) qui ncessiteront alors peut-tre une reprise du flux.
- En fin d'excution du flux, la ligne identifiant le flux sera mise jour pour faire le bilan de
l'excution du flux.
- Si le flux est identifi comme tant reprendre, il sera alors repris la prochaine excution.
Attention, le systme de reprise de donnes n'est valable que pour les flux de chargement
de tables de faits. Ce systme ne sera donc pas employ dans un flux de chargement
d'une table de dimension pour lequel le processus de mise jour est parfaitement
acceptable.
Il s'agit d'une proposition sur la faon de p rocder pour raliser une reprise de donnes. Il
existe bien d'autres possibilits...
Un bon systme d'audit doit tre adapt votre contexte. Il doit tre ni trop lourd, ni trop
compliqu mettre en place. Mais il doit cependant dlivrer suffisamment d'informations.
Dans l'exemple qui va suivre, nous allons complter le systme par une table AuditTraitement,
qui va nous permettre de suivre l'ensemble des excutions de flux, flux de reprise inclus. Les
tables d'audit seront internes l'entrept de donnes DistrisysDW.
- Dans la base de donnes DistrisysDW, crez la table AuditFlux avec la structure ci-dessous,
activez l'incrmentation automatique sur le champ AuditFlux_PK :
Les champs DateDebutPlageDonnees et DateFinPlageDonnees encadreront l'extraction des
donnes source et fixeront donc le primtre du flux.
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 27/42
Les champs DateDebutFlux1ereExecution et DateFinFlux1ereExecution dterminent la date
de dbut et de fin lors de la premire excution. On pourra ainsi en dduire la dure du flux.
Le flux pouvant se reprendre, les champs DateDebutFluxDerniereExecution et
DateFinFluxDerniereExecution dterminent la date de dbut et de fin lors de la dernire
excution du flux. Le champ NbErreurTechnique fait le bilan du nombre d'erreurs techniques
survenues lors de la dernire excution du flux.
Le champ NbAvertissement fait le bilan du nombre d'avertissements survenus lors de la
dernire excution du flux. Un avertissement identifiant un vnement de vigilance que le flux a
su grer.
En fin d'excution du flux, au moment du bilan, c'est le champ FluxAreprendre qui dterminera si
ce flux sera rejou lors de la prochaine excution. La valeur de ce champ sera dtermine par les
vnements gnrs dans la table AuditEvenement, au cours de l'excution du flux.
Le champ NbExecution indiquera le nombre de fois que le flux a t jou. Les flux pouvant se
reprendre, un mme flux peut donc tre excut plusieurs fois. L'administrateur exploitant SSIS
pourra se baser sur la valeur de ce champ pour dterminer si c'est encore utile de rejouer encore
et encore le flux sur cette mme plage de donnes.
Par exemple, un flux identifiant des avertissements depuis plus de 14 mois et jou plus de 40 fois
mrite-t-il d'tre de nouveau rejou ? Dans ce cas, peut-tre que les fonctionnels, n'ayant pas
pris la peine de corriger le problme, considrent que le problme n'en vaut pas la peine... Dans
tous les cas un flux ne pourra pas tre repris indfiniment, soit il faudra corr iger le problme, soit
le problme sera considr comme mineur et l'avertissement ignor.
Puis crez la table AuditEvenement avec la structure ci-dessous et activez l'incrmentation
automatique sur le champ AuditEvenement_PK :
Les vnements vont ponctuer le droulement du flux pour raliser la remonte d'informations.
En fait, il y a trois catgories d'vnements :
- Les vnements de type comptage. Ils comptabilisent le nombre de lignes. On comptera
notamment le nombre de lignes extraites et le nombre de lignes charges.
- Les vnements de type erreur technique. Ils remontent le code et la description
technique de l'erreur due une dfaillance du flux.
- Les vnements de type avertissement. Ils correspondent aux alertes remontes par
les points de vigilance. Les points de vigilance sont mis en uvre au moment du
dveloppement du flux. Ces points de vigilance peuvent tre techniques (non-
correspondance d'un code), mais aussi fonctionnels (le CA factur ne correspondant pas
celui de la comptabilit, la quantit en stock est ngative, le cot est suprieur au prix de
vente)
Les champs principaux sont :
Evnement : nom de l'vnement. Ce nom est spcifique au flux. Dans notre cas, il s'agit
de Nb Lignes Charges FactFacture, Client Inconnu, Produit Inconnu
Evnement Type : ce sera au concepteur SSIS de faire la liste des types d'vnements
qu'il souhaite rfrencer. Dans notre cas il s'agit de Nb Lignes Source, Nb Lignes
Destination, Avertissement et Erreur Technique.
Tche concerne : nom de la tche sur lequel est intervenu l'vnement.
Champ concern : en cas d'avertissement, il s'agit du champ concern par l'alerte.
Valeur en erreur : en cas d'avertissement, il s'agit de la valeur du champ qui a gnr
l'alerte.
Code erreur : correspond au message d'erreur technique gnr par SSIS en cas de
plantage.
Erreur Technique : O pour oui et N pour Non. Permet d'identifier l'vnement comme une
erreur technique.
Avertissement : O pour oui et N pour Non. Permet d'identifier l'vnement comme un
avertissement.
Flux reprendre : O pour oui et N pour Non. Permet d'identifier si l'vnement gnr
ncessitera une reprise du flux courant sur la mme plage de donne.
Nb Lignes Comptabilises : spcifie le nombre de lignes comptes (uniquement en cas
d'vnement de comptage).
La comptabilisation des lignes en entre et en sortie est considre comme un vnement.
En effet dans un flux il y a potentiellement plusieurs sources de donnes, mais aussi
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 28/42
potentiellement plusieurs destinations. C'est pour ce la que ces champs ne peuvent tre
spcifis au niveau de la table AuditFlux.
Crez enfin la table AuditTraitement avec la structure ci-dessous et activez l'incrmentation
automatique sur le champ AuditTraitement_PK :
Cette table fera simplement le bilan de toutes les excutions de flux.
Enfin, pour mettre en place notre systme d'audit, il est ncessaire de mettre jour les tables
de faits et de dimensions alimentes par un flux.
Au niveau de chaque table de dimension, ajoutez deux nouvelles colonnes d'audit :
AuditFluxAjout_FK : pour identifier le flux qui a ajout la ligne.
AuditFluxModification_FK : pour identifier le flux qui a modifi la ligne pour la dernire
fois.
Par exemple, pour DimProduit vous devriez avoir la structure suivante :
De mme, au niveau de chaque table de faits, ajoutez une nouvelle colonne d'audit :
AuditFluxAjout_FK, pour identifier le flux qui a ajout la ligne.
Ajoutez le champ AuditFluxAjout_FK aux tables FactFacture et FactFactureEntete.
Crez les contraintes d'intgrit au niveau de FactFacture comme ci-dessous en crant les
liens suivants :
- entre AuditFlux AuditFlux_PK et FactFacture AuditFluxAjout_FK.
- entre AuditTraitement AuditTraitement_PK et AuditFlux AuditTraitement_FK.
- entre AuditFlux AuditFlux_PK et AuditEvenement AuditFluxt_FK .
Crez ensuite les contraintes d'intgrit suivantes pour DimProduit :
entre AuditFlux AuditFlux_PK et DimProduit AuditFluxAjout_FK.
entre AuditFlux AuditFlux_PK et DimProduit AuditFluxModification_FK .
Enfin, nous ajouterons un membre inconnu dans chaque dimension. Idalement, il faudrait que la
cl technique soit toujours la mme pour en faciliter la gestion.
Dans notre cas, la cl technique du membre inconnu sera 0.
Ajoutez une nouvelle ligne da ns chaque dimension avec pour cl technique 0 et comme nom
inconnu.
Par exemple au niveau de la table DimClient :
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 29/42
En fait, le systme ne rejette aucune ligne. Or, il arrive rgulirement qu'un code client,
notamment, ne soit pas identifi par le systme : soit cause d'une mauvaise saisie, soit parce
que la rplication des bases du CRM a eu une dfaillance l'avant-veille...
Toujours est-il que mme si ce code est inconnu par notre systme, il faudra tout de mme qu'il
accepte la ligne. Pour cela nous utiliserons le schma de principe de l'erreur contrle :
Schma de principe de l'erreur contrle
La tche 1 de type Recherche redirige les non-correspondances de code vers la tache 2.
La tche 2 est un ensemble de tches 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.
- Attribuer par dfaut la cl 0(membre inconnu) aux lignes avec code sans correspondance. La
tche 3, d'union, va rconcilier les lignes avec correspondance et les lignes avec membre
inconnu.
Dans la partie suivante nous allons tudier le flux de chargement intgrant cette fois-ci le
systme d'audit.
4-3. Exemple de flux avec audit
Le flux de chargement des factures a t amlior afin d'intgrer le systme d'audit. Le package
DW_FactFacture_Avec_Audit.dtsx, prsent dans ce chapitre est disponible dans la solution
distrisys ETL en tlchargement sur le site des ditions ENI.
tudions tout d'abord le flux de contrle ci-dessous :
Exemple de flux intgrant l'audit de flux
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 30/42
Ce flux de contrle s'accompagne de la cration de nouvelles variables :
La tche Initialisation AuditTraitement va insrer une nouvelle ligne dans la table
AuditTraitement et va rcuprer la valeur AuditTraitement_FK de la ligne gnre dans la
variable du mme nom.
Pour obtenir ce comportement, configurez la proprit SQL Statement comme ci-dessous :

Slectionnez
INSERT INTO [AuditTraitement]([NomFlux],[DateDebutTraitement])
VALUES(?,GETDATE())
SELECT cast(SCOPE_IDENTITY() as int) AS AuditTraitementID
Le ResultSet doit tre positionn sur Ligne Unique.
Dans l'onglet Mappage des paramtres, la variable User::NomFlux de direction Input et de
type Varchar, est mapp avec le nom de paramtre 0.
Dans l'onglet Jeu de rsultats, la variable User::AuditTraitement_FK est mappe avec le Nom
de rsultats AuditTraitementID ; en rfrence au no m de la colonne ramene par la clause
SELECT de la requte.
La tche Initialisation AuditFlux va simplement insrer une nouvelle ligne dans la table
AuditFlux.
Sa proprit SQL Statement est la suivante :

Slectionnez
INSERT INTO [AuditFlux]
([NomFlux],[AuditTraitement_FK],[DateDebutFlux1ereExecution],
[DateDebutFluxDerniereExecution],[DateDebutPlageDonnees],
[DateFinPlageDonnees],[FluxAreprendre],[NbExecution])
VALUES
(?,?,GETDATE(),GETDATE(),(SELECT
MAX([DateFinPlageDonnees]) FROM [AuditFlux] WHERE
[NomFlux]='DW_Chargement Facture')
,GetDate(),'O',0)
Cette nouvelle ligne a, comme date de dbut de plage de donnes, la valeur maximum de la plage
de donnes de fin des flux de mme nom et comme date de fin de plage de donnes, la date
actuelle. Bien entendu, tout ceci se configure et s'affine suivant les situations.
Comme nous l'avons dj vu, lors du flux de chargement du SA, la tche
ObtenirListeDesFluxAReprendre lit la table AuditFlux pour r cuprer la liste des flux
reprendre. Cette liste est rcupre dans la variable ListeDesFluxAreprendre.
C'est cette mme variable qui est parcourue par la tche Pour chaque AuditFlux.
chaque itration, les variables AuditFlux_FK, DateDebutPlageDonnees et DateFinPlageDonnees
sont rinitialises pour prendre la valeur du flux courant.
De ce fait, pour chaque flux parcouru par la boucle, deux tches vont supprimer les faits et les
lignes AuditEvenement prcdemment chargs.
Puis la tche de flux de donnes va lancer l'extraction des donnes de DistrisysSA, pour
effectuer le chargement dans DistrisysDW.
Enfin, les tches Bilan AuditFlux et Bilan AuditTraitement font une requte d'update dans leur
table respective, afin de faire le rcapitulatif de l'excution du processus :
- Bilan AuditFlux fait le bilan partir des donnes de la table AuditEvenement.
- Bilan AuditTraitement fait le bilan partir des donnes de la table AuditFlux.
Au final, voici le contenu de la table AuditTraitement :
Et celui de la table AuditFlux :
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 31/42
tudions maintenant le contenu du flux de donnes.
Nous avons simplement ajout de nombreux points de vigilance, afin de faire des remontes
d'informations dans la table AuditEvenement.
La comptabilisation des lignes extraites va se faire avec les tches ci-dessous :
Le schma de principe de l'erreur contrle est mis en pratique par les tches ci-dessous :
Enfin, la comptabilisation des lignes charges dans la table FactFacture est ralise par les
tches ci-dessous :
La table AuditEvenement ainsi charge est la suivante :
Nous venons ainsi de raliser un flux de chargement des factures intgrant un systme d'audit et
de reprise de donnes en automatique.
Malgr le systme d'audit, il est conseill d'activer la gestion des logs de SSIS. Si le systme
d'audit vous fournit normment d'informations structures, la gestion de logs SSIS peut vous
fournir des informations complmentaires plus techniques.
Pour activer la gestion des logs, cliquez sur SSIS dans la barre de menu, puis sur
Journalisation.
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 32/42
Dans le type de fournisseurs, slectionnez Mode fournisseur d'informations pour SQL
Server puis cliquez sur Ajouter afin d'crire les logs directement dans une table.
L'information sera ainsi plus simple retraiter et exploiter.
Puis, dans la colonne Configuration, slectionnez la connexion DistrisysDW.
Slectionnez tous les conteneurs en cochant DW_FactFacture_avec_audit dans la
fentre
Conteneurs et dans l'onglet Dtails , slectionnez tous les types d'vnements .
Enfin, dans Slectionner les journaux utiliser pour le conteneur, cochez la case
module fournisseur .
Puis terminez en cliquant sur OK.
cran de configuration des journaux SSIS
Une nouvelle table sysssislogs, identifie comme table systme, s'ajoute la base de donnes
DistrisysDW.
Ses principaux champs enregistrs par les logs sont les suivants :
Event : rfrence le type d'vnement l'origine de l'entre de log (OnPreValidate,
OnInformation, OnProgress).
Computer : le nom du serveur qui a excut le flux.
Operator : le compte de service qui a excut le flux.
Source : nom de la tche l'origine de la ligne de log.
SourceId : identifiant technique SSIS de la t che l'origine de la ligne de log.
ExecutionId : identifiant technique du traitement.
StartTime : date de dbut de l'vnement.
EndTime : date de fin de l'vnement.
Message : dcrit le rsultat de l'vnement et affiche notamment en dtail un message
d'erreur.
La traabilit de nos flux est ainsi complte. Nanmoins, nous n'avons fait que la moiti du
travail. Il vous sera ncessaire, par la suite, de crer les rapports d'audit, mais aussi
potentiellement les mesures et indicateurs de la performance de votre processus ETL,
prsenter vos utilisateurs. Le chapitre Restituer les donnes dcisionnelles - Reporting Services
traite de la ralisation de tels rapports, je vous suggre de vous y reporter pour plus de dtail.
De plus, la russite de ce systme ne vaut que si les utilisateurs s'emploient au quotidien
corriger les erreurs que vous leur prsentez. La qualit des rapports et des indicateurs que vous
leur fournirez et leurs disponibilits au ct des donnes dcisionnelles sont donc essentielles.
5. Gestion des paramtres de flux et mise en production
Dans les parties prcdentes, vous avez appris dvelopper 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 paramtrage et la portabilit de vos flux sur des
environnements diffrents (recette, production).
Pour pouvoir porter les flux d'un environnement un autre, nous allons devoir utiliser les
paramtres du projet SSIS, qui vont nous permettre, par exemple, de variabiliser les chanes de
connexion du projet.
Ensuite, nous importerons notre projet SSIS dans un catalogue Integration Services, qui est en
fait une base de donnes particulire du serveur SQL Server. Ce catalogue nous permettra
notamment de dployer et excuter nos packages.
Dans ce catalogue, nous dfinirons 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 paramtres du projet partir des donnes de l'environnement. On peut lier un
projet plusieurs environnements. C'est l'excution des flux que l'on choisira l'environnement et
donc les valeurs des paramtres que l'on veut utiliser pour cette excution.
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 33/42
Principe de paramtrage et gestion des environnements dans SSIS
5-1. Paramtrage des flux
Actuellement, les connexions du Gestionnaire de connexions sont dfinies en dur. Nous allons
donc les configurer afin que leurs chanes de connexion soient issues d'un paramtre pour lequel
vous pourrez dfinir une valeur en fonction de l'environneme nt. Vous faciliterez ainsi la
portabilit de vos flux. Pour cela, nous allons devoir crer deux paramtres :
ChaineConnexionSA de type string contiendra la chane de connexion la base DistrisysSA
ChaineConnexionDW de type string contiendra la chane de connexion la base
DistrisysDW
Si vous prvoyez l'excution de vos flux de production avec l'agent SQL Server, vos flux seront
excuts avec le compte de service de l'agent SQL Server. Prvoyez donc de donner les droits
d'accs en lecture et en criture aux bases de donnes auxquelles ce compte devra
accder.
Si par contre vos flux doivent tre excuts par un ordonnanceur autre que l'agent SQL, il vous
faudra intgrer la chane de connexion un login et mot de passe d'un compte SQL Server.
Crez donc ce compte et attribuez-lui les droits d'accs aux bases de donnes auxquelles
il devra accder. Attention, toutefois de ne pas lui attribuer plus de droits que le compte
n'en a besoin.
Crez donc ce compte et attribuez-lui les droits d'accs aux bases de donnes auxquelles il
devra accder. Attention, toutefois de ne pas lui attribuer plus de droits que le compte n'en a
besoin.
Modifiez la connexion DistrisysSA de votre flux si besoin puis fermez le Gestionnaire de
connexions :
Cliquez avec le bouton droit sur la connexion DistrisysSA et slectionnez Paramtrer :
Slectionnez Crer un paramtre et renommez-le en ChaineConnexionSA.
Slectionnez Projet pour l'tendue du paramtre (il sera ainsi disponible pour tous les
packages du projet) et Requis (le projet ne pourra pas tre excut si le paramtre n'est
pas renseign).
Puis ajoutez manuellement le mot de passe la chane de connexion de la variable, comme
indiqu ci-dessous :
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 34/42
Paramtrage d'une connexion
Faites de mme pour la connexion DistrisysDW en crant le paramtre ChaineCon-
nexionDW.
La liste des paramtres du projet est accessible depuis l'Explorateur de solutions, en double
cliquant sur Project.params :
Paramtres du projet
ce stade, vos connexions sont pilotes par le contenu des paramtres ChaineConnexionSA et
ChaineConnexionDW.
Testez de nouveau votre flux pour vous assurer qu'il continue bien fonctionner.
Mais les valeurs de vos paramtres sont toujours lies votre serveur de dveloppement. Avant
de les lier un environnement, nous devons dployer le projet SSIS dans un catalogue
Integration Services sur le serveur de base de donnes.
5-2. Cration du catalogue Integration Services
Vous devrez crer un catalogue Integration Services sur chaque serveur o vous dploierez vos
projets SSIS.
Pour crer le catalogue, connectez-vous depuis SSMS au serveur de base de donnes, avec un
compte Windows. Cliquez avec le bouton droit sur Catalogues Integration Services et
slectionnez l'option Crer le catalogue.
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 35/42
Cration d'un catalogue
Renseignez un mot de passe qui sera utilis pour le cryptage des donnes, puis cliquez sur
le bouton OK.
On ne peut pas renommer le catalogue, ni sa base de donnes.
La base de donnes et le catalogue SSISDB sont maintenant crs.
Le catalogue SSISDB et la base de donnes associe
Vous n'utiliserez jamais la base de donnes directement, sauf pour des oprations de
maintenance. C'est le catalogue Integration Services qui vous permettra de grer vos
projets.
Nous allons maintenant crer un rpertoire dans le catalogue afin d'y dployer notre projet SSIS.
Cliquez avec le bouton droit sur le catalogue SSISDB et slectionnez Crer un dossier. Crez le
dossier DistrisysETL.
Cration d'un rpertoire dans le catalogue
Nous pouvons maintenant dployer notre projet SSIS DistrisysETL dans le catalogue que nous
venons de crer.
5-3. Dploiement du projet SSIS sur le serveur de
dveloppement
Le dploiement d'un projet SSIS dans un catalogue consiste l'importer dans la base de donnes
SSISDB du serveur. partir de l, nous pourrons l'excuter et surtout, valoriser ses paramtres.
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 36/42
Dans SSDT, ouvrez le projet DistrisysETL , slectionnez dans le menu Projet l'option
Dployer.
L'assistant de dploiement s'ouvre. Cliquez sur Suivant pour passer la premire fentre.
La source est par dfaut le projet courant.
Dans l'cran de slection de la destination, entrez le nom du serveur et slectionnez le
rpertoire dans lequel vous voulez dployer votre projet :
Dploiement d'un projet dans le catalogue
Cliquez sur Suivant puis vrifiez vos slections et cliquez sur Dployer.
Votre projet est maintenant disponible dans le catalogue SSISDB :
Retournez dans SSMS. Dans le rpertoire DistrisysETL du catalogue SSISDB, vous avez
maintenant une nouvelle arborescence avec la liste des packages du projet, ainsi qu'un
sous-rpertoire Environnements.
Contenu du catalogue SSISDB
C'est dans ce sous-rpertoire que nous allons pouvoir dfinir notre environnement qui contiendra
les variables qui serviront renseigner les paramtres des packages leur excution.
5-4. Les environnements
Un environnement contient un ensemble de valeurs utilises pour valoriser les paramtres d'un
projet son excution.
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 37/42
Crez un nouvel environnement que vous appellerez Dveloppement en cliquant avec le
bouton droit sur le sous-rpertoire Environnements et en slectionnant Crer
l'environnement .
Cration d'un environnement
Cliquez ensuite avec le bouton droit sur l'environnement cr et slectionnez Proprits.
Dans la page Variables, nous allons crer deux variables ChaineConnexionSA et
ChaineConnexionDW, de type String, qui auront pour valeur les chanes de connexion aux bases
de donnes DistrisysSA et DistrisysDW.
Dfinition de variables d'environnement
Reprenez les valeurs des paramtres SSIS pour renseigner les valeurs des chanes variables de
l'environnement.
Cliquez sur le bouton OK pour fermer la fentre.
Nous allons maintenant relier les paramtres du projet SSIS aux variables de l'environnement que
nous venons de crer.
Cliquez avec le bouton droit sur le projet DistrisysETL et slectionnez dans le menu
contextuel l'option Configurer :
Configuration d'un projet
Dans la fentre Configurer-DistrisysETL, au niveau de l'onglet Rfrences, nous allons
lier le projet l'environnement Dveloppement. Cliquez sur Ajouter et slectionnez
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 38/42
l'environnement Dveloppement.
Lier un environnement un projet
Au niveau de l'onglet Paramtres, sur la ligne du paramtre ChaineConnexionDW, cliquez
pour faire apparatre la fentre Dfinir la valeur du paramtre. Slectionnez alors la
variable d'environnement ChaineConnexionDW comme valeur du paramtre.
Lier un paramtre du projet une variable d'environnement
Faites de mme pour le paramtre ChaineConnexionSA en le reliant la variable
d'environnement ChaineConnexionSA.
Cliquez sur le bouton OK.
Vous pouvez maintenant excuter le package DW_FactFacture_avec_Audit depuis le
catalogue SSISDB. Pour cela, cliquez avec le bouton droit sur le package pour faire
apparatre le menu contextuel, puis cliquez sur Excuter .
Cochez la case Environnement pour activer le lien avec les variables d'environnement et
cliquez sur le bouton OK pour excuter le flux.
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 39/42
Lien entre un projet et un environnement au moment de l'excution
Lors de l'excution du flux, les paramtres sont initialiss avec les valeurs des variables de
l'environnement Dveloppement.
Le catalogue Integration Services fournit des rapports standards sur les excutions des
packages, accessibles dans l'arborescence du catalogue avec le menu contextuel.
Nous pouvons maintenant dployer le projet en production.
5-5. Mise en production du projet SSIS
Avant de pouvoir dployer votre premier projet sur votre serveur de production, vous devez y
crer un catalogue SSISDB. Dans ce catalogue, vous devez, comme prcdemment sur votre
serveur de dveloppement, crer un rpertoire ainsi qu'un environnement qui contiendra les
mmes variables qui celui de dveloppement, mais avec les valeurs lies au contexte de
production.
Connectez-vous avec SSMS la base de production.
Crez un catalogue Integration Services partir du rpertoire Catalogues Integration
Services.
Crez ensuite dans ce catalogue SSISDB un nouveau dossier nomm DistrisysETL.
Le dploiement d'un projet sur l'environnement de production se fait partir du catalogue
SSISDB de l'environnement de dveloppement.
Connectez-vous avec SSMS au serveur de dveloppement, et dans le catalogue Integration
Services, cliquez avec le bout on droit sur le rpertoire Projets du projet dployer, puis
slectionnez Dployer le projet.
Dploiement d'un projet depuis un catalogue SSISDB
Comme Source, slectionnez Catalogue Integration Services, puis renseignez le nom du
serveur source, et grce au bouton Parcourir, slectionnez le projet dployer.
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 40/42
Slection du projet dployer
Cliquez sur Suivant. Renseignez le nom du serveur de production, puis grce au bouton
Parcourir, slectionnez le rpertoire o dployer le projet.
Slection du catalogue o dployer le projet
Cliquez sur Suivant puis vrifiez vos slections et validez en cliquant sur Dployer.
Le projet est maintenant prsent sur votre serveur de production. Lors du premier dploiement
d'un projet dans un nouveau catalogue, il faut configurer les liens entre le projet et les
environnements du catalogue, ainsi qu'entre les variables des environnements et les paramtres
du projet.
Connectez-vous avec SSMS au catalogue SSISDB du serveur de production.
Configurez le projet DistrisysETL pour le lier l'environnement et lier les paramtres du
projet aux variables de l'environnement.
Cette opration n'est faire qu'une seule fois aprs le premier dploiement du projet. Lors du
dploiement d'une nouvelle version du projet, les liens avec l'environnement sont conservs.
Nous avons vu dans la partie prcdente comment configurer diffrents environnements et
comment procder la mise en production de vos flux. Dans cette dernire partie, nous allons
maintenant aborder la planification des flux.
5-6. Planifier un flux SSIS
La grande majorit des flux d'un entrept de donnes sont raliss afin d'tre excuts
priodiquement. Les services informatiques des grandes organisations disposent gnralement
d'un ordonnanceur d'entreprise charg de coordonner l'ensemble des flux des diffrents systmes
ou applications. Si un tel ordonnanceur est disponible dans votre organisation, nous vous
suggrons bien videmment de planifier vos flux SSIS l'aide de cet outil. moins que
l'ordonnancerait un connecteur spcifique SSIS, l'excution des flux SSIS se fera alors
vraisemblablement avec la commande dtexec. Si tel est votre cas, reportez-vous la
webographie pour plus de dtails sur l'utilisation de cette commande.
Si votre organisation ne dispose pas d'un tel outil, la planification des flux SSIS va alors se
raliser avec l'agent SQL Server.
La manipulation qui va suivre illustre la faon de procder avec l'agent SQL Server, afin de crer
une nouvelle tche de planification excutant un flux SSIS prcdemment ralis et publi sur un
environnement de production.
L'agent SQL Server est disponible sous SSMS. Ouvrez donc l'interface SSMS.
Connectez-vous votre instance de base de donnes et dpliez le menu Agent SQL
Server.
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 41/42
La console d'administration de l'agent SQL Server
Nous allons maintenant procder la cration d'un nouveau travail dont le rle sera d'excuter le
flux SSIS.
Faites un clic droit sur l'lment Travaux et slectionnez Nouveau Travail.
Spcifiez un nom, par exemple Chargement des factures.
Puis slectionnez l'onglet tapes.
Cliquez sur le bouton Nouveau pour crer une nouvelle tape.
Nommez l'tape Chargement des factures.
Dans le type de package, slectionnez Package SQL Server Integration Services.
Dans l'onglet Gnral, dans Source du package, slectionnez Catalogue SSIS, puis dans
Serveur le nom de votre serveur.
Dans Package, parcourez l'arborescence jusqu' slectionner le package excuter.
Dfinition d'une tape SQL Agent pour excuter un flux SSIS
Slectionnez l'onglet Configuration pour lier le package un environnement et renseigner
les paramtres.
Lien entre un package SSIS et un environnement dans une tape SQL Agent
Cliquez sur OK, puis allez sur l'onglet Planifications pour paramtrer son lancement.
Dfinissez ainsi les tapes, la configuration et la planification du lancement de vos flux.
Au cours de ce chapitre, vous avez donc appris configurer la portabilit d'un package et
programmer son lancement l'aide de l'agent SQL Server.
Ce chapitre tant clos, vous possdez les prrequis pour traiter du chargement de donnes.
Vous devrez alors tre mme de crer vos propres flux et de penser votre systme d'audit.
La base de donnes DistrisysDW finale, le catalogue SSISDB, ainsi que les packages SSIS
abords lors de ce chapitre, sont disponibles en tlchargement sur le site des ditions
ENI. N'hsitez pas vous y reporter et vous inspirer des dveloppements raliss.
23/04/14 Business Intelligence avec SQL Server 2012
editions-eni.developpez.com/tutoriels/business-intelligence/business-intelligence-avec-sql-server-2012/ 42/42

Developpez.com
Nous contacter
Participez
Informations lgales
Services
Forum Business Intelligence
Blogs
Hbergement

Partenaires
PlanetHoster
Ikoula


Copyright 2012 Editions ENI . A ucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois
ans de prison et jusqu' 300 000 de dommages et intrts.
Responsable bnvole de la rubrique Business Intelligence : fafabzh6 - Contacter par email
Copyright 2000-2014 - www.developpez.com

Vous aimerez peut-être aussi