Atelier Pratique SSIS : Exploration des Composants Data Flow avec
AdventureWorks
Introduction et Configuration
But : Mettre en place le projet SSIS et préparer les ressources.
Étapes :
1. Créer un projet SSIS dans SSDT.
2. Ajouter une connexion à la base AdventureWorks (utiliser une OLE DB Connection
Manager).
3. Identifier les tables source et cible :
- Table source : Sales.SalesOrderDetail
- Table de référence pour Lookup : Production.Product
- Table destination (à créer) : Sales.SalesOrderTransformed.
Script SQL : Création de la table destination
CREATE TABLE Sales.SalesOrderTransformed (
SalesOrderID INT,
ProductID INT,
Name NVARCHAR(50),
OrderQty INT,
UnitPrice MONEY,
LineTotal MONEY,
TransformedValue MONEY,
ModifiedDate DATETIME
);
Exploration des Sources de Données
But : Charger les données de la table source Sales.SalesOrderDetail.
Activité :
1. Ajouter un Data Flow Task au Control Flow.
2. Dans le Data Flow, utiliser :
- OLE DB Source : Charger les données depuis Sales.SalesOrderDetail.
- Flat File Source (optionnel) : Ajouter un fichier CSV d'exemple si nécessaire.
3. Configurer les colonnes à extraire : SalesOrderID, ProductID, OrderQty, UnitPrice,
LineTotal, ModifiedDate.
Transformation avec Lookup
But : Ajouter des informations produits depuis la table Production.Product.
Activité :
1. Ajouter un composant Lookup :
Orange
Restrict
ed
- Configurer le Lookup pour se connecter à Production.Product.
- Mapper ProductID entre les deux tables.
- Extraire la colonne Name de la table Product.
2. Configurer le Cache Mode :
- Utiliser Full Cache pour les petites tables (recommandé ici).
- Configurer un chemin pour les lignes non appariées si nécessaire (Error Output).
Autres Transformations
But : Manipuler et transformer les données.
Activité :
1. Derived Column : Ajouter une colonne calculée TransformedValue = LineTotal * 1.1 (par
exemple).
2. Conditional Split : Diviser les commandes en deux groupes :
- Commandes avec OrderQty > 5.
- Commandes avec OrderQty <= 5.
3. Aggregate : Calculer le total des montants pour chaque SalesOrderID.
4. Sort : Trier les données par ModifiedDate.
Chargement des Données
But : Sauvegarder les données transformées dans une table SQL.
Activité :
1. Ajouter un OLE DB Destination pour insérer les données dans la table
Sales.SalesOrderTransformed.
2. Configurer le mapping des colonnes.
3. Créer un flux distinct pour les commandes non appariées depuis le Lookup et les
sauvegarder dans une table d’erreurs.
Script SQL : Table pour les erreurs de Lookup
CREATE TABLE LookupErrorLog (
ProductID INT,
ErrorDescription NVARCHAR(MAX),
ErrorDate DATETIME DEFAULT GETDATE()
);
Exercice Final : Mini-Projet
Scénario :
1. Extraire les données de Sales.SalesOrderDetail.
2. Utiliser un Lookup pour récupérer le nom du produit depuis Production.Product.
3. Ajouter une colonne calculée pour le total transformé (LineTotal * 1.2).
4. Diviser les données en deux groupes : commandes importantes (OrderQty > 5) et
commandes standard.
5. Charger les commandes importantes dans la table Sales.SalesOrderTransformed et les
Orange
Restrict
ed
commandes standard dans un fichier CSV.
6. Sauvegarder les erreurs de Lookup dans la table LookupErrorLog.
Conclusion et Questions
Discuter des bonnes pratiques pour l’utilisation des composants Lookup.
Orange
Restrict
ed