Vous êtes sur la page 1sur 8

MIT820: Entrepôts de données et intelligence artificielle

Introduction aux outils BI de SQL Server 2016


Tutoriel sur SQL Server Integration Services (SSIS)

Description générale
Ce tutoriel a pour objectif de vous familiariser avec les fonctionnalités de base de l’outil ETL de la
suite BI de Microsoft : SQL Server Integration Services (SSIS).

Dans le tutoriel, vous allez créer un projet d’intégration de données permettant d’insérer de
nouvelles lignes dans une table de faits modélisant le taux de change journalier de différentes
monnaies, à partir de fichiers textes. Pour insérer ces lignes, deux transformations devront être
définies au processus d’intégration: des lookups qui récupèrent les clés dimensionnelles à partir
de colonnes sources. Le concept de traitement en lot sera également abordé par la création d’un
contenant itérateur (ForEach loop container) qui exécute la tâche d’intégration sur un ensemble de
fichiers sources. Finalement, vous devrez définir un mécanisme de gestion d’erreurs, permettant
de sauvegarder les erreurs rencontrées dans un fichier journal.

Pour plus d’informations sur ce tutoriel, consultez le lien suivant :

https://msdn.microsoft.com/en-us/library/ms169917.aspx

I. Installation et connexion à la machine virtuelle (VM)


Les étapes suivantes sont nécessaires à l’utilisation de la machine virtuelle contenant les outils et
données du tutoriel.

Installer l’application client Microsoft Remote Desktop:


• Pour les utilisateurs Windows, l’application peut être téléchargée à l’adresse suivante;
• Pour les utilisateurs Mac, l’application est disponible gratuitement dans le magasin
AppStore.

Ajouter et démarrer la machine virtuelle:

1. Dans le client Remote Desktop, cliquer sur l’icône New pour ajouter une nouvelle VM;
2. Donner un nom à la connection, et ensuite entrer l’adresse IP (champs PC name), le nom
d’utilisateur et le mot de passe de votre équipe (envoyé par courriel par le professeur);
3. Une fois la VM créée, cliquer sur l’icône Start pour démarrer la VM.

Note : la VM peut recevoir une seule connexion à la fois. Toute connexion faite à une VM déjà en
cours d’utilisation sera bloquée.

Explorer la machine virtuelle:


Dans Menu démarrer → Tous les programmes → Microsoft SQL Server 2016, vous trouverez les
deux outils qui seront utilisés dans les tutoriels du cours :

• Microsoft SQL Server Management Studio : pour voir les tables de la BD OLTP
(AdventureWorks2014) et la BD OLAP (AdventureWorksDW2014), ainsi que faire des
requêtes sur ces tables;
• Visual Studio 2015: pour créer des projets SSIS, SSAS et SSRS.

II. Visualisation des données


Tables de l'entrepôt de données:

1. Lancer l'application Microsoft SQL Server Management Studio (attendre quelques


secondes si démarré pour la première fois);
2. Entrer les paramètres de connexion suivants:
• Server Type : Database Engine
• Server Name : MTI820-AAAA1-X, où AAAA correspond à l’année et X le numéro de
l’équipe (ex : MTI820-20171-6).
• Authentification : Windows Authentification
3. Dans le Object Reporter à gauche: Databases → AdventureWorksDW2014 → Tables
4. Observer la structure de la table de faits dbo.FactCurrencyRate;
5. Afficher le contenu de la table : Clique-droit sur FactCurrencyRate → Select Top 1000
Rows;
6. Répéter la même chose pour les tables de dimension: dbo.DimDate et dbo.DimCurrency.

Fichiers sources (txt):

1. Dans l'Explorateur Windows, ouvrir le répertoire suivant :


c:\Exercices\SQL2012.Integrations_Services.Create_Simple_ETL_Tutorial.Sample
2. Avec Wordpad, ouvrir le fichier suivant : SampleCurrencyData.txt
3. Signification des colonnes :
• AverageRate (float) : taux de change moyen de la monnaie;
• CurrencyKey (nchar) : code représentant le type de monnaie;
• CurrencyDate (Date) : estampille de date du taux de change;
• EndOfDayRate (float) : taux à la clôture de la journée.

III. Simple projet SSIS


Créer un projet SSIS:

1. À partir du menu démarrer : ouvrir l’outil Visual Studio 2015;

2. Créer un projet: Fichier → Nouveau → Projet;


3. Choisir le type: Intergration Services Project;
4. Nommer le projet (ex : tutorielMTI820_SSIS).
Environnement de développement (IDE) :

Observer les différents éléments de l’interface:


• Flux de contrôle: définir des tâches de contrôle sur le processus global d’intégration de
données;
• Flux de données: définir un flux de données (ETL), comprenant l’extraction de données
d’une ou plusieurs sources, l’application de diverses transformations, et le chargement des
données transformées dans une destination (ex : entrepôt de données);
• Gestionnaires d’évènements: définir les opérations de gestion d’évènements reliés au
processus ETL;
• Explorateur de packages: visualiser les libraires (packages) d’intégration créés dans le
projet;
• Éditeur de propriétés: visualiser et modifier les propriétés de chaque composante du
système ETL.

Créer un Gestionnaire de connexion de fichier plat :

Gestionnaire de connexion qui servira à lire fichiers textes contenant l’information sur le taux des
monnaies.

1. Dans le menu Gestionnaire de connexions (en bas complètement), cliquer-droit et choisir


Nouvelle connexion de fichier plat;
2. Renommer la connexion dans le Nom du gestionnaire de connexions: Sample Flat File
Source Data;
3. Cliquer sur Parcourir et choisir le fichier SampleCurrencyData.txt (voir étape II);
4. S’assurer que l’option Paramètres régionaux est Anglais (États-Unis);
5. Dans le menu Avancé (côté gauche):
• Changer le nom des colonnes pour AverageRate, CurrencyID, CurrencyDate,
EndOfDayRate;
• Utiliser Suggérer les types (en bas) pour identifier les types à l'aide d'un échantillon;
• Si ce n’est pas déjà fait, changer le type de AverageRate et EndOfDayRate pour float
[DT_R4];
• Changer le type de CurrencyID pour DT_WSTR et CurrencyDate pour DT_DBDATE;
6. Cliquer sur Aperçu pour voir le résultat;
7. Cliquer sur OK.

Créer un Gestionnaire de connexion OLE DB :

Gestionnaire de connexion vers l’entrepôt de données qui sera utilisé pour accéder aux tables de
dimensions et la table de faits.
1. Dans le menu Gestionnaire de connexions (en bas), cliquer-droit et choisir Nouvelle
connexion OLE DB;
2. Dans le menu Configurer le gestionnaire de connexions OLE DB, cliquer sur Nouveau;
3. Entrer le nom du serveur comme à l’étape II;
4. Dans le menu Connexion au serveur, choisissez Windows Authentification comme à
l’étape II.
5. Dans le menu Connexion à la base de données, choisir AdventureWorksDW2014 pour la
DB;
6. Tester la connexion en cliquant sur le bouton Tester la connexion;
7. Cilquer sur OK.

Créer un Data Flow Task:


Flux de données permettant de lire un fichier texte contenant des taux de monnaie, et insérer
chacune des lignes du ficher dans la table de faits FactCurrencyRate. Note des opérations de
lookup seront nécessaires pour obtenir les clés étrangères correspondant aux dimensions
DimCurrency et DimDate.
1. À partir du menu Boîte à outils (à gauche), glisser-déposer un Data Flow Task dans le
canevas;
2. Optionnellement, renommer le Task en cliquant sur la boîte créée : Extract Sample
Currency Data.

Ajouter une Source de fichier plat (Flat file source):


Tâche servant à extraire les éléments d’un fichier texte (i.e., fichier plat).

1. Aller dans l’onglet Flux de données (double-cliquer sur le Data Flow Task créé
précédemment si nécessaire);
2. À partir du menu Boîte à outils → Autres sources (à gauche), glisser-déposer un Flat File
Source sur le canevas;
3. Ouvrir le Flat File Source en double-cliquant sur la boîte créée;
4. Dans le Gestionnaire de connexions de fichiers plats, sélectionner la connexion Sample
Flat File Source Data créée précédemment;
5. Cliquer sur Columns (à gauche) et vérifier que les colonnes de la source sont toutes
présentes;
6. Cliquer sur OK.

Créer les transformations de lookup pour les clés dimensionnelles:

Transformations de type lookup pour aller récupérer les clés dimensionnelles de l’entrepôt
correspondant aux clés d’affaires dans les fichiers plats.

1. À partir du menu Data Flow Transformations, glisser-déposer une transformation Lookup


sur le canevas;
2. Renommer la transformation Lookup Currency Key en cliquant sur la boîte créée;
3. Connecter la flèche bleue (sortie sans erreur) sortant du Flat File Source au nouveau
Lookup;
4. Ouvrir le Lookup en double cliquant sur sa boîte;
5. Dans le menu, choisir les options suivantes :
• Cache complet
• Connection type : Gestionnaire de connexions OLE DB
6. Dans le menu Connexion (à gauche), choisir :
• Gestionnaire de connexions OLE DB: [nom de serveur].AdventureWorksDW2014
• Table : [dbo].[DimCurrency]
7. Dans le menu Colonnes (à gauche), associer CurrencyID avec CurrencyAlternateKey en
cliquant sur la première colonne et déplaçant la souris vers la seconde. Cocher sur
CurrencyKey. Le lookup convertira une valeur CurrencyID à la CurrencyKey de la valeur
CurrencyAlternateKey correspondante;
Note : CurrencyKey est la clé primaire artificielle, et CurrencyAlternateKey est la clé
d’affaires
8. De la même façon, créer un lookup pour la dimension Date, appelé Lookup Date Key;
9. Relier la flèche bleue du premier lookup à ce nouveau lookup, et choisir Lookup Match
Output pour la sortie;
10. Double-cliquer la boîte du nouveau lookup et entrer les paramètres suivants (voir lookup
précédent):
• Mode de cache : Cache partiel;
• Table : DimDate
• Colonnes : Relier CurrencyDate à FullDateAlternateKey et cocher DateKey.
Note : utiliser les mêmes paramètres que pour le lookup précédent, lorsque non spécifié

Créer une Destination OLE DB:

Tâche permettant d’insérer des lignes traitées par le flux de données dans la table de faits
FactCurrencyRate.

1. À partir du menu Autres destinations (à gauche), glisser-déposer un OLE DB Destination


sur le canevas;
2. Connecter la sortie (flèche bleue) du dernier au Lookup à celui-ci (choisir Look Match
Output);
3. Ouvrir la OLE DB Destination en double cliquant sur sa boîte;
4. Choisir les paramètres suivants :
• Gestionnaire de connexions OLE DB : [nom du serveur].AdventureWorksDW2014;
• Table : [dbo].[FactCurrencyRate];
5. Dans Mappage (à gauche), vérifier que les colonnes de même nom sont correctement
associées;
6. Cliquer sur OK.

Tester le processus:
Lancer le processus ETL (mode déboguage) en cliquant sur l’icône Démarrer dans la barre de
menu (triangle vert en haut).
Note : Une coche verte devrait apparaître à coté de chaque élément du flux de données, et un total
de 1096 lignes devrait arriver au OLE DB Destination.
IV. Gestion du traitement en lot
Modification au flux de contrôle pour appliquer le flux de données précédent à un ensemble de
fichiers plats se trouvant dans un répertoire.

Créer le ForEach Loop container:

Conteneur permettant d’exécuter la tâche de flux de données sur les fichiers texte d’un répertoire.

1. Si ce n’est pas encore fait, interrompre le mode déboguage en cliquant sur l’icône en forme
de carré rouge (en haut);
2. Cliquer sur l’onglet Flux de contrôle. Le flux de données (Extract Sample Currency Data)
devrait être visible sur le canevas;
3. À partir du menu Conteneurs de la Boîte à outils (à gauche), glisser-déposer un item de
type Conteneurs de boucles ForEach;
4. Ouvrir l’item créé en double-cliquant sur la boîte;
5. Dans le menu Collection (à gauche):
• Choisir ForEach File Enumerator pour l’option Enumerator
• Dans Dossier, cliquer sur parcourir et choisir le répertoire des fichiers de monnaie (voir
étape II);
• Dans Fichier, mettre : Currency_*.txt
6. Dans le menu Mappage de variables (à gauche), cliquer sur la colonne Variable, choisissez
l’option Nouvelle variable :
• Nom : varFileName;
• Espace de noms : User.
• Type de valeur : String.
7. Cliquer OK pour revenir au canevas, et cliquer-déplacer la boîte du DataFlow créé
précédemment à l'intérieur du conteneur de boucles.

Modifier le Gestionnaire de connexion à fichiers plats :

Modification au gestionnaire de connexions à fichiers plats pour qu’il reçoive du conteneur en


boucles le nom du fichier à lire (à travers la variable crée précédemment).

1. Sélectionner (simple-clique) le Gestionnaire de connexions à fichiers plats (Sample Flat


File Source Data) dans le menu Gestionnaire de connexions;
2. Dans le menu Propriétés (à droite), cliquer sur Expressions (...);
3. Cliquer sous la colonne Propriétés, choisir ConnectionString;
4. Sous la colonne Expression cliquer sur (…), et trouver User::varFileName dans le menu
Variables et paramètres, et glisser-déposer cette variable dans le champs Expression plus
bas.
5. Revenir au canevas en cliquant sur OK;

Tester le processus ETL :


Retourner au flux de données en cliquant sur l’icône correspondant et, comme lors de l’étape
précédente, cliquer sur l'icone Start (triangle vert).
IV. Gestion des erreurs
Créer une erreur dans les données:
1. Dans l’Explorateur Windows, créer une copie du fichier Currency_CAD.txt et la renommer
Currency_BAD.txt;
2. Dans le fichier Currency_BAD.txt, remplacer toutes les instances de CAD par BAD;
3. Dans SQL Developer Studio, cliquer à nouveau sur l'icone Start (triangle vert);
4. Une erreur devrait être causée par l'insertion de lignes existantes;
5. Ouvrir le OLE BD Destination Task en double-cliquant sur celui-ci;
6. Dans Error Output: choisir l'option Ignore failure;
7. Retester le processus en cliquant à nouveau sur l'icone Start (triangle vert);
8. Une erreur devrait survenir (fichier Currency_BAD.txt).

Ajouter un mécanisme de gestion d'erreur :


1. À partir du menu Other Destinations (à gauche), glisser-déposer un Flat File Destination
dans le canevas Data Flow;
2. Connecter la flèche rouge du Lookup CurrencyKey vers le nouveau Flat File Destination;
3. Dans la colonne erreur, choisir Redirect Row;
4. Ouvrir le Flat File Destination en double-cliquant sur celui-ci;
5. Dans Connection manager, choisir New et Delimited;
6. Entrer le nom ErrorData
7. Cliquer sur Browse et entrer le nom de fichier ErrorOutput.txt;
8. S’assurer que l’option Locale est English (United States);
9. Dans Columns, observer que 2 nouvelles colonnes ont été créées;
10. Cliquer sur OK;
11. Dans le Flat File Destination Editor, Enlever l'option Overwrite Data;
12. Dans Mappings, observer les nouvelles colonnes ajoutées à la sortie (ErrorCode et
ErrorColumn);
13. Cliquer sur OK;
14. Relancer le processus avec l’icône Start;
15. Vérifier que les lignes problématiques ont bien été ajoutées dans ErrorOutput.txt.

Ajouter fonctions de journalisation (logging)


1. Choisir Logging dans le menu SSIS;
2. Sélectionner le package;
3. Dans Providers and logs, Providers type: Text files;
4. Cliquer ajouter, et modifier le nom si nécessaire;
5. Cliquer sur Configuration et choisir <new connection>;
6. Usage type: Create file;
7. Cliquer sur Browse et entrer logTutoriel.log pour le nom du fichier;
8. Selectionner le DataFlow task dans Containers (à l'intérieur de Foreach Loop Container)
9. Dans Details, ajouter PipelineExecutionPlan et PipelineExecutionTrees;
10. Relancer le processus avec l’icône Start;
11. Vérifier que l’exécution a bien été journalisée dans logTutoriel.log.