SSIS – Implémenter un flux

publicité
SSIS
Implémenter un flux
Version 1.0
Z
Thibault Denizet
2
SSIS – Implémenter un flux
Sommaire
1
Introduction
4
2
Contraintes de précédence
5
3
Implémenter un flux de contrôle
8
3.1
8
3.1.1
Conteneur de boucle For
3.1.2
Conteneur de boucle Foreach
10
3.1.3
Conteneur de séquence
10
Eléments du flux de contrôle
11
3.2
8
3.2.1
Tâche de flux de données
11
3.2.2
Tâches de préparation des données
11
3.2.3
Tâches de flux de travail
17
3.2.4
Tâches SQL Server
22
3.2.5
Tâches de script
24
3.2.6
Tâches Analysis Services
25
3.2.7
Tâches de compatibilité descendante
28
3.3
4
Conteneurs du flux de contrôle
Tâches du plan de maintenance
30
3.3.1
Tâche Sauvegarder la base de données
30
3.3.2
Tâche Vérifier l’intégrité de la base de données
31
3.3.3
Tâche Exécuter le travail de l’Agent SQL Server
32
3.3.4
Tâche Exécuter l’instruction T-SQL
32
3.3.5
Tâche de nettoyage d’historique
33
3.3.6
Tâche de nettoyage de maintenance
33
3.3.7
Tâche Notifier l’opérateur
34
3.3.8
Tâche Reconstruire l’index
35
3.3.9
Tâche Réorganiser l’index
36
3.3.10
Tâche Réduire la base de données
37
3.3.11
Tâche Mettre à jour les statistiques
37
Implémenter un flux de données
4.1
Source de flux de données
38
38
4.1.1
Source ADO.net
38
4.1.2
Source Excel
40
Dotnet France Association
3
SSIS – Implémenter un flux
4.1.3
Source de fichier plat
41
4.1.4
Source OLE DB
44
4.1.5
Source de fichier brut
45
4.1.6
Source XML
45
4.2
47
4.2.1
Transformations Business Intelligence
47
4.2.2
Transformations de lignes
48
4.2.3
Transformations d’ensemble de lignes
54
4.2.4
Transformations de fractionnement et de jointure
56
4.2.5
Audit de transformation
59
4.3
5
Transformation du flux de données
Destinations du flux de données
60
4.3.1
Destination ADO.NET
60
4.3.2
Destination d’apprentissage du modèle d’exploration de données
61
4.3.3
Destination DataReader
61
4.3.4
Destination de traitement de dimension
61
4.3.5
Destination Excel
61
4.3.6
Destination de fichier plat
61
4.3.7
Destination OLE DB
61
4.3.8
Destination de traitement de partition
61
4.3.9
Destination de fichier brut
61
4.3.10
Destination de l’ensemble d’enregistrements
61
4.3.11
Destination SQL Server Compact Edition
61
4.3.12
Destination SQL Server
62
Conclusion
63
Dotnet France Association
4
SSIS – Implémenter un flux
1 Introduction
Ce chapitre sera consacré aux tâches du flux de contrôle et du flux de données qui sont le cœur
de notre package. En effet, ce sont ces tâches qui vont permettre le transfert et la transformation de
nos données. Elles vont également nous permettre de nous tenir informer sur l’évolution de notre
package. Dans un premier temps, nous allons étudier les tâches du flux de contrôle puis celles du flux
de données. Cependant, il nous est nécessaire tout d’abord de nous intéresser aux contraintes de
précédence afin d’apprendre à lier nos tâches.
Dotnet France Association
5
SSIS – Implémenter un flux
2 Contraintes de précédence
SSIS nous propose, pour lier nos tâches, des flèches. Il suffit de cliquer sur la flèche d’une tâche
et de glisser la souris jusqu’à une autre tâche pour les lier. Lors de l’exécution du package, les tâches
seront exécutés dans l’ordre de ces flèches et selon les conditions que nous auront déterminé.
Dans l’image ci-dessous, on remarque quatre tâches, notre tâche Data Flow qui sera exécuté en
premier, puis trois autres tâches qui lui sont liées par des flèches de différentes couleurs.
Si nous faisons un clic droit sur la flèche bleue on obtient le
menu ci-contre :
Chaque couleur correspond en fait à une contrainte,
la tâche Script (flèche verte) s’exécutera uniquement si
l’exécution de la tâche Data Flow s’est bien déroulé.
La tâche Script 1 (flèche bleue) s’exécutera après la tâche
Data Flow peu importe le succès ou l’échec de l’exécution de
celle-ci.
Enfin, la tâche Send Mail (flèche rouge) s’exécutera si
l’exécution de la tâche Data Flow a échoué.
Plus simplement :
Flèche verte = succès
Flèche rouge = échec
Flèche bleue = Dernière étape (Completion en anglais)
Si ces trois options ne suffisent pas, il est possible de rajouter des restrictions grâce aux
expressions et aux options de l’éditeur de contrainte de précédence :
Dotnet France Association
6
SSIS – Implémenter un flux
Nous allons maintenant détailler le contenu de ce menu :
La première chose à choisir est l’opération d’évaluation (Evaluation operation), quatre choix s’offrent
à nous :
-
-
Contrainte (Constraint) : C’est l’option par défaut, on choisit simplement l’une des trois
options vues plus haut (Succès, échec, dernière étape)
Expression : On rentre une expression et l’exécution de la tâche liée ne se fera que si
le contenu de l’expression est évalué à true(vrai).
Expression et Contrainte : Pour que l’exécution de la tâche liée se produise, il faut que
l’option sélectionnée soit renvoyée (succès, échec ou dernière étape) ET que le contenue de
l’expression soit évalué à true(vrai).
Expression ou Contrainte : L’exécution de la tâche liée se fera si l’option sélectionnée est
renvoyée (succès, échec ou dernière étape) OU si le contenu de l’expression est évalué à
True(vrai).
Le menu Multiple constraints en bas de la capture d’écran permet de déterminer le
comportement de la tâche si cette dernière à plusieurs flèches de précédence connectées :
Deux options sont disponibles :
- ET logique : Toutes les flèches de précédence doivent
s’exécuter avec succès.
- OU logique : Au moins une des flèches de précédence doit
s’exécuter avec succès.
Dotnet France Association
7
SSIS – Implémenter un flux
Il est possible de mettre des tâches de flux de contrôle sans les raccorder à d’autres tâches, ces
dernières ne sont donc pas liées à l’évolution du reste du package et ne sont pas soumises à un ordre
d’exécution particulier.
Dotnet France Association
8
SSIS – Implémenter un flux
3 Implémenter un flux de contrôle
Il existe deux types de tâches dans SSIS :
-
-
Les tâches du flux de contrôles qui sont le squelette de notre package. Ces tâches permettent
de traiter toutes les options ne concernant par directement les données à déplacer et
transformer.
Les tâches du flux de données représentent toutes les tâches qui vont déplacer les données,
les modifier, les remplacer, etc... La tâche Flux de données est une tâche du flux de contrôle
qui va comprendre toutes nos tâches du flux de données.
Nous allons dans cette première partie décrire succinctement la plupart des tâches du flux de
contrôle en commençant par les conteneurs et en continuant avec les autres tâches.
3.1
Conteneurs du flux de contrôle
Les conteneurs sont rangés dans une autre partie que le reste des tâches du flux de contrôle
car ce sont des tâches particulières. Elles contiennent d’autres tâches du flux de contrôle et
permettent divers résultats que nous allons détailler.
3.1.1
Conteneur de boucle For
Le conteneur de boucle For permet la répétition des tâches
qu’il contient. Ce conteneur est proche d’une boucle For en C# ou en
C.
Voici une capture d’écran d’une boucle For contenant deux tâches,
une tâche SQL et une tâche flux de données.
Le conteneur va permettre de répéter plusieurs fois ces deux tâches.
Afin de comprendre la configuration de ce conteneur, nous allons nous intéresser à une capture
d’écran :
Dotnet France Association
9
SSIS – Implémenter un flux
Le nombre de fois où le contenu de la boucle For est exécuté est déterminé par trois
propriétés : InitExpression, EvalExpression et AssignExpression. Nous pouvons voir ces propriétés
dans la partie For Loop Properties ci-dessus.
L’InitExpression est exécuté en premier au début de la boucle pour initialiser la variable qui
contrôle le conteneur. Ensuite l’EvalExpression est évaluée, si elle est évaluée à True, le contenu de la
boucle est exécuté. Si elle est évaluée à false, l’exécuteur quitte la boucle. Après chaque exécution
du contenu de la boucle, l’AssignExpression est évaluée, suivi d’une nouvelle évaluation de
l’EvalExpression.
Dans notre capture d’écran, le conteneur de boucle For utilise la variable @Compteur dans
les expressions afin de contrôler le nombre d’exécution de la boucle. En réalité, il n’est pas
nécessaire d’utiliser une variable explicite, toute expression évaluée à true quand la boucle doit
continuer et à false si elle doit s’arrêter conviendra.
Dotnet France Association
10
SSIS – Implémenter un flux
3.1.2 Conteneur de boucle Foreach
Comme la boucle For, la boucle Foreach fournit un moyen de répéter une partie d’un flux de
contrôle. Cependant, au lieu d’avoir une expression pour contrôler la sortie de la boucle, la boucle
Foreach utilise un système d’itération pour chaque item d’une collection. On peut utiliser les
collections suivantes :
-
Chaque fichier dans un dossier donné correspondant à type de fichier spécifié.
Chaque ligne de la première table dans un recordset ADO ou un dataset ADO.NET.
Chaque ligne de toutes les tables dans un dataset ADO.NET.
Chaque table dans un dataset ADO.NET.
Chaque élément d’une variable contenant une collection.
Chaque nœud (node) dans une liste de nœud (nodelist) XML.
Chaque objet dans une collection SMO (SQL Server Management Objects).
On peut par exemple utiliser une boucle Foreach afin d’uploader tous les fichiers d’un répertoire
sur un serveur FTP.
3.1.3
Conteneur de séquence
Contrairement aux deux conteneurs précédents, le conteneur de séquence ne modifie pas la
trame du package, il permet simplement d’organiser les tâches de nos packages. Le conteneur de
séquence permet par exemple d’organiser un gros package en sections pour faciliter le
développement et le debugging. De plus, il est possible de définir des propriétés communes pour les
tâches appartenant à un même conteneur. Il fournit également un moyen simple d’avoir différentes
portées au sein de nos packages.
Voici un aperçu de trois conteneurs de séquence dont deux ayant leur contenu masqué.
Dotnet France Association
11
SSIS – Implémenter un flux
3.2 Eléments du flux de contrôle
Maintenant que nous avons vu les différents conteneurs présents, nous allons étudier toutes
les tâches du flux de contrôle en commençant par les éléments du flux de contrôles, suivies des
tâches du plan de maintenance.
3.2.1
Tâche de flux de données
3.2.1.1 Tâche de flux de données
La tâche de flux de données comprend toutes les tâches pour la transformation des données.
Elle se configure dans l’onglet Flux de données, la partie suivante sera centrée sur ces tâches et leurs
utilisations. Un flux de données représente les colonnes d’une table ou d’une vue. Il peut y avoir
plusieurs flux de données dans un même package.
3.2.2
Tâches de préparation des données
3.2.2.1 Tâche de système de fichiers
La tâche de système de fichiers nous permet d’effectuer les actions suivantes :
-
Copier un répertoire
Copier un fichier
Créer un répertoire
Supprimer un répertoire
Supprimer le contenu d’un répertoire
Supprimer un fichier
Déplacer un répertoire
Renommer un fichier
Définir les attributs d’un répertoire ou d’un fichier
Nous devons créer une connexion vers le fichier source ou le répertoire source avec lequel nous
souhaitons interagir. Il faut également spécifier une connexion vers la destination si cela est
nécessaire (Copie, déplacement).
Dotnet France Association
12
SSIS – Implémenter un flux
Ci-dessus l’éditeur de la tâche de système de fichiers.
3.2.2.2 Tâche FTP
La tâche FTP nous permet d’effectuer les actions suivantes sur un domaine FTP :
-
Envoyer des fichiers
Recevoir des fichiers
Créer un répertoire local
Créer un répertoire distant
Supprimer un répertoire local
Supprimer un répertoire distant
Supprimer des fichiers locaux
Supprimer des fichiers distants
Dotnet France Association
13
SSIS – Implémenter un flux
Les étapes de la configuration sont :
-
Dans le menu général de l’éditeur, définir la connexion FTP grâce à l’adresse de votre
domaine FTP, votre login et votre mot de passe.
Dans le menu Transfert de fichier (File Transfer), le LocalPath définit le fichier à copier
lorsqu’on veut envoyer des fichiers (Send Files), d’autres options sont disponibles dans la
partie Operation. Il faut également remplir le RemotePath, qui est le dossier dans lequel vos
fichiers seront uploadés sur le serveur FTP.
Dotnet France Association
14
SSIS – Implémenter un flux
3.2.2.3 Tâche de service Web
La tâche de service Web nous permet d’exécuter un service Web à l’intérieur de notre
package. Il faut pour cela créer une connexion http. Ensuite nous sélectionnons la méthode web que
l’on souhaite utiliser.
Dotnet France Association
15
SSIS – Implémenter un flux
3.2.2.4 Tâche XML
La tâche XML nous permet de manipuler des documents XML. Grâce à cette tâche, il est possible
d’effectuer les actions suivantes :
-
Valider un document XML en utilisant un XSD (XML Schema Document) ou un DTD
(Document Type Definition).
Appliquer une XSL Transformation (XSLT)
Appliquer une requête XPath
Fusionner deux documents XML
Trouver les différences entre deux documents XML (Diff Operation)
Appliquer sortie d’une opération Diff
Le document XML source peut être lié à la tâche grâce au gestionnaire de connexion, par une
variable du package ou entré directement. Le document XML résultant d’une opération peut être
sauvé dans un fichier texte spécifié ou sauvegardé dans une variable du package.
Dotnet France Association
16
SSIS – Implémenter un flux
3.2.2.5 Tâche de profilage des données
Cette tâche calcule différents profils en récoltant les informations d’un ensemble de
données. Nous pouvons ainsi détecter tout problème au sein de ces données.
Nous pouvons effectuer les opérations de profilage suivantes :
-
-
Profil de clé candidate : Détermine si une colonne ou un ensemble de colonnes est un
identifiant unique pour la table sélectionnée.
Profil de distribution de longueurs de colonne : Fournit une liste des différentes longueurs
des chaînes de caractères présentes dans une colonne.
Profil de ratio de colonne Null : Rapporte le nombre de NULLs dans une colonne.
Profil de modèle de colonne : Détermine un ensemble d’expressions régulières qui sont
valides pour un pourcentage spécifié de valeurs dans une colonne de chaîne.
Profil de statistiques de colonnes : Trouver la valeur maximale et minimale, la moyenne et
l’écart type pour des colonnes numériques, ainsi que la valeur maximale et minimale pour
des colonnes Datetime.
Profil de distribution de valeurs de colonne : Renvoie les différents ensembles de valeurs
dans une colonne et le pourcentage d’occurrence de chaque valeur.
Profil de dépendance fonctionnelle : Signale le degré de dépendance entre les valeurs d’une
colonne et une autre colonne ou un ensemble de colonnes.
Profil d’inclusion de valeur : Calcule le nombre de valeurs communes entre une ou plusieurs
colonnes.
Dotnet France Association
17
SSIS – Implémenter un flux
3.2.3
Tâches de flux de travail
3.2.3.1 Tâche d’exécution de package
Cette tâche nous permet d’inclure un package Integration Services à l’intérieur d’un autre.
Nous disons alors que le package qui contient la tâche d’exécution de package est le package père, et
celui qui est lié à la tâche est le package fils.
Nous pouvons voir ci-dessous l’éditeur de la tâche d’exécution de package, nous pouvons y
rentrer plusieurs paramètres : Une connexion vers le package fils, le nom du package, le password, et
la dernière option, ExecuteOutOfProcess permet de dissocier le processus d’exécution du package fils
et du package père. Ainsi, si nous mettons cette option à True, le package fils ne s’exécutera pas dans
le même processus que le package père et les erreurs du package fils n’ont pas d’influence sur le
package père et son bon déroulement.
Dotnet France Association
18
SSIS – Implémenter un flux
3.2.3.2 Tâche d’exécution de processus
La tâche d’exécution de processus permet l’exécution d’un programme ou d’un fichier batch.
Nous pouvons par exemple utiliser cette tâche pour dézipper des fichiers compressés, exécuter des
applications de gestions, etc.
Ci-dessus, l’éditeur de la tâche d’exécution de processus. Voici une liste des éléments à configurer :
Executable : Définit le chemin d’accès à l’exécutable.
Arguments : Une des deux méthodes pour fournir une entrée à l’application lorsqu’elle est exécutée.
Pour passer plusieurs arguments, il faut utiliser des espaces pour les délimiter. Il est également
possible d’utiliser une expression pour passer une valeur variable en argument.
Exempe : @Var1 + " " + @Var2
Working Directory (Répertoire de travail) : Définit le chemin d’accès au répertoire de travail de
notre application.
StandardInputVariable : La deuxième méthode pour fournir une entrée à notre application, il faut
pour cela spécifier une variable.
StandardOutputVariable : Option permettant de définir des variables pour exploiter la sortie de
l’application.
Dotnet France Association
19
SSIS – Implémenter un flux
StandardErrorVariable : Option permettant de définir des variables pour exploiter la sortie d’erreur
de l’application.
Nous pouvons aussi spécifier un délai d’attente ou une valeur pour s’assurer que l’exécution s’est
bien passée.
3.2.3.3 Tâche MSMQ
La tâche MSMQ (MicroSoft Message Queue) nous permet d’utiliser Message Queuing pour
envoyer ou recevoir des messages entre différents packages SSIS ou pour envoyer des messages à
une file d’attente traitée par une autre application. L’utilisation de MSMQ permet de coordonner
toute une entreprise en retardant par exemple l’exécution d’une tâche tant que toutes les tâches
nécessaires à son exécution ne sont pas terminées.
Un message peut être un fichier de données, une ou plusieurs variables ainsi que leur contenu, ou
encore une chaîne de caractères.
Pour la configuration, il suffit de créer une connexion vers une file d’attente de la manière suivante :
<Nom_ordinateur>\<Nom_File_Attente> ou encore .\<Nom_File_Attente> si la file d’attente est sur
l’ordinateur local. Ensuite, nous rajoutons le type du message et le message.
Dotnet France Association
20
SSIS – Implémenter un flux
3.2.3.4 Tâche Envoyer un message
La tâche Envoyer un message permet l’envoi d’un message depuis notre package, il est ainsi
possible de signaler les erreurs à l’administrateur pour que celui-ci y remédie rapidement.
La configuration se fait en quelques étapes :
-
Créer la connexion vers le serveur SMTP
Définir l’émetteur ainsi que le destinataire
Rentrer un sujet
Taper notre message
Choisir la priorité et joindre des fichiers si nécessaire
Dotnet France Association
21
SSIS – Implémenter un flux
3.2.3.5 Tâche Lecteur de données WMI
La tâche Lecteur de données WMI permet l’exécution d’une requête WMI (Windows
Management Instrumentation) pour obtenir les informations d’un ordinateur spécifié. Cela peut-être
une liste des applications installées, les composants matériels de l’ordinateur, etc. Pour configurer
cette tâche, nous créons une connexion vers l’ordinateur dont ou souhaite obtenir des informations,
puis on rentre la requête et enfin la destination des données renvoyés.
Dotnet France Association
22
SSIS – Implémenter un flux
3.2.3.6 Tâche Observateur d’événement WMI
La tâche Observateur d’événements WMI (Windows Management Instrumentation) observe
les événements en utilisant une requête d’événements WQL (Management Instrumentation Query
Language) pour définir quels sont ceux qui peuvent être intéressants. Nous pouvons par exemple
attendre qu’un fichier ait fini d’être déplacé pour poursuivre l’exécution du package, ou bien
attendre la fin de l’installation d’une application.
3.2.4
Tâches SQL Server
3.2.4.1 Tâche d’insertion en bloc
Cette tâche nous permet de copier rapidement des données d’un fichier texte dans une table
ou un vue SQL Server. Nous spécifions pour cela la base de données de destination (connection) ainsi
que la table(DestinationTable), puis nous ajoutons le fichier qui contient les données à transférer
(File). Attention, pour cette tâche, le ficher source est toujours un fichier texte.
Ci-dessus, le menu Connexion de la tâche d’insertion en bloc.
3.2.4.2 Tâche d’exécution de requêtes SQL
La tâche d’exécution de requêtes SQL permet l’exécution d’instructions ou de procédures
SQL. La tâche peut contenir une seule ou plusieurs instructions SQL (l’exécution se fait alors de
manière séquentielle).
Dotnet France Association
23
SSIS – Implémenter un flux
Cette tâche peut être utilisée pour :
-
Tronquer une table ou une vue pour la préparer à l’insertion de données.
Créer, modifier et supprimer des objets de base de données (tables ou vues).
Recréer des tables de faits et de dimensions avant d’y charger des données.
Exécuter des procédures stockées.
Enregistrer dans une variable l’ensemble de lignes retourné par une requête.
Voici les étapes à suivre pour configurer cette tâche (Vous pouvez voir l’éditeur de cette tâche plus
bas) :
-
Définir le type de gestionnaire de connexions à utiliser pour établir la connexion à une base
de données.
Préciser le type d'ensemble de résultats retourné par l'instruction SQL.
Spécifiez un délai d'expiration pour les instructions SQL.
Définir la source de l'instruction SQL.
Indiquez si la tâche passe la phase de préparation de l'instruction SQL.
Si nous utilisons le type de connexion ADO, nous devons indiquer si l’instruction SQL est une
procédure stockée. Pour les autres types de connexions, le paramétrage est automatique et
en lecture seule
Dotnet France Association
24
SSIS – Implémenter un flux
3.2.4.3 Tâche de transfert de bases de données
La tâche de transfert de bases de données permet de copier ou déplacer une base de
données entre deux instances SQL Server.
3.2.4.4 Tâche de transfert de messages d’erreur
Cette tâche transmet des messages d’erreurs entre des instances de SQL Server.
3.2.4.5 Tâche de transfert de travaux
La tâche de transfert de travaux transfert des travaux d'agent SQL Server entre des instances
de SQL Server.
3.2.4.6 Tâche de transfert de connexions
Cette tâche permet de transférer une ou plusieurs connexions entre des instances de SQL
Server.
3.2.4.7 Tâche de transfert de procédures stockées de master
Cette tâche transfert des procédures stockées de master entre des bases de données master
sur des instances de SQL Server.
3.2.4.8 Tâche de transfert d’objets SQL Server
Cette tâche transfert un ou plusieurs types d’objets d’une base de données SQL Serveur
entre des instances SQL Server. On peut par exemple copier des tables ou des vues.
3.2.5
Tâches de script
3.2.5.1 Tâche de script
La tâche de script permet d’intégrer du code .NET dans notre package SSIS. Cette tâche est
similaire à la tâche de script ActiveX, en effet, ces deux tâches peuvent effectuer des
transformations, faire des calculs complexes et implémenter une logique métier qui ne peuvent être
crées en utilisant d’autres tâches SSIS. Cependant, la tâche de script est supérieur à la tâche de script
ActiveX, le codage se fait plus simplement et la code est précompilé dès que le script est enregistré,
ce qui augmente les performances lors de l’exécution du package.
La configuration de cette tâche est assez simple, il suffit de spécifier quel langage nous
souhaitons utiliser (C# ou VB), les variables que nous ne pouvons pas modifier(ReadOnlyVariables) et
les variables que nous pouvons modifier(ReadWriteVariables). Il faut ensuite taper le code en
cliquant sur Edit Script… .
Dotnet France Association
25
SSIS – Implémenter un flux
3.2.6
Tâches Analysis Services
3.2.6.1 Tâche DDL d’exécution de SQL Server Analysis Services
Cette tâche nous permet d’intervenir sur un serveur Analysis Services en modifiant ou en
supprimant les objets multidimensionnels comme les cubes et les dimensions. Pour cela, la tâche
utilise des requêtes DDL (Data Definition Language) qui sont écrites en AASL (Analysis Services
Scripting Language) puis insérées dans une commande XMLA (XML for Analysis Services).
Dotnet France Association
26
SSIS – Implémenter un flux
Voici le menu de la tâche DDL d’exécution de SQL Server Analysis Services, cette tâche utilise
un gestionnaire de connections Analysis Services pour se connecter à une instance Analysis Services.
Ensuite nous choisissons entre Direct input, où nous tapons directement notre requête, file
connection, qui se connecte à un fichier contenant la requête, ou variable, où nous définissons la
source par une variable.
3.2.6.2 Tâche de traitement d’Analysis Services
La tâche de traitement d’Analysis Services nous permet de traiter les objets Analysis Services,
comme les cubes, les dimensions et les modèles d’exploration de données (Datamining). Nous
l’utilisons en général lorsqu’un grand nombre de changement ont été fait dans la base de données.
Dotnet France Association
27
SSIS – Implémenter un flux
3.2.6.3 Tâche de requête d’exploration de données
Cette tâche fournit des prédictions grâce à l’utilisation de requêtes de prédictions basées sur
les modèles d’exploration de données intégrés à Analysis Services. Les requêtes sont écrites en DMX
(Data Mining Extensions) qui est une extension du langage SQL prenant en charge l’utilisation de
modèles d’exploration de données. Le DataMining sera détaillé dans le cours Analysis Services.
Dotnet France Association
28
SSIS – Implémenter un flux
Ci-dessus, le menu principal de la tâche de requête d’exploration de données.
3.2.7
Tâches de compatibilité descendante
3.2.7.1 Tâches de script ActiveX
Les tâches de script ActiveX permettent de définir des scripts en VBScript ou en Javascript.
Cette tâche est fournie uniquement à des fins de compatibilité avec le composant DTS (Data
Transformation Services, l’ancêtre de SSIS). En effet, cette tâche présente des désavantages par
rapport à une tâche de script, elle est interprétée lors de l’exécution du package contrairement à une
tâche de script qui est précompilée. De plus, la tâche de script ActiveX présente des problèmes de
sécurité en permettant l’accès aux serveurs. Pour finir, cette tâche ne fournit aucune aide à la
programmation.
Elle permet cependant d’effectuer des calculs complexes, et d’intégrer une logique métier au
sein du package.
Dotnet France Association
29
SSIS – Implémenter un flux
Ci-dessus, le menu de script de la tâche de script ActiveX, on peut y choisir le langage (Javascript ou
VBScript), entrer un script ou l’importer et déterminer le point d’entrée de notre script.
Dotnet France Association
30
SSIS – Implémenter un flux
3.3 Tâches du plan de maintenance
En plus des conteneurs de boucles et outils du flux de contrôle, l’onglet du flux de contrôle
possède également les tâches du plan de maintenance. Comme leur nom l’indique ces tâches font
partie du plan de maintenance d’une base de données. Il est possible de voir sur chaque tâche les
requêtes SQL exécutés lorsque nous utilisons la tâche. Lorsque la configuration n’est pas expliquée,
cela signifie qu’elle est similaire à la première expliquée.
3.3.1
Tâche Sauvegarder la base de données
Cette tâche permet l’intégration d’une sauvegarde de la base de données au sein de notre
package. On l’utilise par exemple avant d’effectuer de gros changements dans notre base de
données. Grâce à cette tâche, on peut inclure dans le même package et donc durant la même
exécution une tâche pour sauvegarder les données et une autre pour les modifier.
Dotnet France Association
31
SSIS – Implémenter un flux
Pour configurer cette tâche, nous créons d’abord une connexion vers le serveur, nous
pouvons ensuite choisir le nombre que l’on souhaite de base de données à sauvegarder sur cet
unique serveur. Nous choisissons le type de sauvegarde, Full, Differential ou Transaction Log. La
sauvegarde peut se composer d’un seul fichier ou de plusieurs (Un par base de données).
3.3.2
Tâche Vérifier l’intégrité de la base de données
La tâche vérifier l’intégrité de la base de données vérifie si une ou plusieurs bases de données
sur un même serveur sont corrompues. Cette tâche exécute en fait la commande suivante DBCC
CHECKDB WITH NO_INFOMSGS pour chaque base de données spécifiée. Cette tâche peut être
utilisée par exemple après de grosses modifications dans une base de données.
La configuration est simple, nous créons la connexion vers le serveur et nous spécifions les
bases de données à inspecter. Si l’inspection ne détecte pas de données corrompues, la tâche est
considérée comme un succès et seules les tâches liées avec une contrainte de précédence succeed
ou completion seront exécutées. Si l’inspection détecte des données corrompues, ce sera les tâches
liées par une contrainte d’échec.
Dotnet France Association
32
SSIS – Implémenter un flux
3.3.3
Tâche Exécuter le travail de l’Agent SQL Server
Cette tâche nous permet d’effectuer un travail spécifique à l’intérieur de notre package. Un
seul travail peut être sélectionné pour l’exécution.
Il suffit de créer la connexion puis de sélectionner le travail.
3.3.4 Tâche Exécuter l’instruction T-SQL
Cette tâche nous permet d’exécuter une ou plusieurs instructions T-SQL
Dotnet France Association
33
SSIS – Implémenter un flux
3.3.5
Tâche de nettoyage d’historique
La tâche de nettoyage permet la suppression des historiques d’une base de données. Cela
inclut les historiques de sauvegarde, les historiques de travail de l’agent SQL, et les historiques du
plan de maintenance de base de données.
3.3.6
Tâche de nettoyage de maintenance
La tâche de nettoyage de maintenance supprime les fichiers crées par le plan de
maintenance de base de données et les sauvegarde de bases de données.
Dotnet France Association
34
SSIS – Implémenter un flux
3.3.7
Tâche Notifier l’opérateur
Cette tâche envoie un e-mail à un ou plusieurs opérateurs SQL Server utilisant SQLiMail. Un
opérateur doit être installé avec une adresse e-mail in SQL Server avant de pouvoir utiliser cette
tâche. Bien entendu, SQLiMail doit être installé et configuré pour cette tâche pour fonctionner.
Dotnet France Association
35
SSIS – Implémenter un flux
3.3.8
Tâche Reconstruire l’index
La tâche Reconstruire l’index reconstruit les index d’une ou plusieurs bases de données. Cela
oblige les serveurs SQL à supprimer leurs index pour les reconstruire.
Dotnet France Association
36
SSIS – Implémenter un flux
3.3.9
Tâche Réorganiser l’index
La tâche Réorganiser l’index réorganise les index dans une ou plusieurs bases de données.
Réorganiser les index défragmente les éléments des index groupés et des index non groupés. De
plus, cela compresse les index.
Dotnet France Association
37
SSIS – Implémenter un flux
3.3.10 Tâche Réduire la base de données
Cette tâche permet la récupération des emplacements des tables non utilisés dans une ou
plusieurs bases de données. Nous pouvons déterminer si cet espace libéré est rendu au système
d’exploitation ou s’il est gardé par la base de données.
3.3.11 Tâche Mettre à jour les statistiques
Cette tâche nous permet de mettre à jour les statistiques dans une ou plusieurs bases de
données. Etant donné que les bases de données sont utilisées par SQL Server pour calculer les plans
d’exécution des requêtes, c’est important que ces statistiques soient à jour.
Dotnet France Association
38
SSIS – Implémenter un flux
4 Implémenter un flux de données
Nous avons donc vu toutes les tâches du flux de contrôle, nous allons maintenant étudier les
tâches du flux de données qui vont nous permettre de modifier nos données. Nous allons
commencer par voir les tâches nous permettant de définir les sources de nos données. Nous verrons
ensuite les tâches de transformation des données, puis enfin, nous analyserons les tâches
permettant de sélectionner les destinations de nos données.
4.1 Source de flux de données
4.1.1
Source ADO.net
La tâche Source ADO.net permet l’utilisation d’ADO.NET afin de se connecter à une base de
données source.
Pour utiliser cette tâche, il faut créer une connexion vers les données source. Une fois que
cette connexion a été créée, nous avons le choix entre deux types d’accès aux données. Soit par le
mode Table or view (Table ou vue) soit par le mode SQL command, autrement dit grâce à une
requête SQL.
Si nous choisissons le mode Table or view, il nous suffira ensuite de sélectionner la table ou la vue à
utiliser.
Dotnet France Association
39
SSIS – Implémenter un flux
Si nous choisissons le mode SQL Command, nous devons ensuite choisir de quel façon nous
allons utiliser cette méthode. Tout d’abord, nous pouvons rentrer directement notre requête dans
l’espace à cet effet, dans ce cas, il nous faut bien connaître la structure de la base de données et être
à l’aise avec la syntaxe des requêtes SQL. Sinon, il est possible d’utiliser le SQL Server Management
Studio puis de sauvegarder la requête. Nous allons ensuite la chercher avec la fonction browse de
notre tâche. Enfin, nous pouvons utiliser le générateur de requête (Query Builder). Nous parlerons
plus tard du Générateur de requête, lorsque nous travaillerons sur la source OLE DB.
L’onglet Colonne ci-dessus, utilise les informations de l’onglet Connection Manager dès que nous
l’ouvrons. Nous pouvons y voir les colonnes de notre table ou de notre vue.
Dotnet France Association
40
SSIS – Implémenter un flux
4.1.2
Source Excel
La tâche Source Excel nous permet d’utiliser un fichier Excel comme source de données. Il
nous faut créer une connexion vers le fichier Excel à utiliser. L’accès aux données peut se faire selon
les deux méthodes vu dans la tâche Source ADO.NET, plus deux autres : Table name or view name
variable (Une table ou une vue spécifiée dans une variable.) et SQL Command from variable(Les
résultats d'une instruction SQL stockée dans une variable). Lorsque cela est fait, l’onglet Columns
affiche les colonnes de notre fichier Excel.
Dotnet France Association
41
SSIS – Implémenter un flux
4.1.3
Source de fichier plat
Cette tâche permet l’utilisation de fichiers texte comme source de données. Comme pour les
autres tâches, nous devons créer une connexion vers le fichier plat à utiliser. Nous pouvons indiquer
la délimitation des colonnes au sein de notre fichier plat de nombreuses manières.(tab, virgule, etc.).
Dotnet France Association
42
SSIS – Implémenter un flux
Nous pouvons voir un aperçu de la mise en forme des colonnes dans l’onglet Column et spécifier
quelques options supplémentaires.
Dotnet France Association
43
SSIS – Implémenter un flux
L’onglet Advanced nous permet de définir les propriétés de nos colonnes.
Enfin l’onglet Preview offre un aperçu du rendu.
Dotnet France Association
44
SSIS – Implémenter un flux
4.1.4
Source OLE DB
La tâche Source OLE DB permet l’utilisation de données de n’importe quelle source qui
supporte l’utilisation d’OLE DB. Pour rappel, OLE DB est une interface de programmation(API)
développé par Microsoft pour l’accès aux données. La configuration est très proche de ce que nous
avons déjà vu.
Dotnet France Association
45
SSIS – Implémenter un flux
4.1.5
Source de fichier brut
La tâche Source de fichier brut nous permet d’utiliser des données stockées dans un fichier
brut. Le format de fichier brut est le format de base pour Integration Services. En raison de cela,
l’accès à ce type de fichiers se fait rapidement par SSIS.
4.1.6
Source XML
Comme son nom le laisse supposer, la tâche Source XML permet d’utiliser les données
stockées dans des fichiers XML dans le flux de données. Si le XML provient d’un fichier, il suffit de
spécifier le chemin d’accès ou obtenir le chemin du fichier grâce à une variable au moment de
l’exécution. Il est également possible de spécifier le chemin d’accès d’un XSD qui définit la structure
de notre XML.
Dotnet France Association
46
SSIS – Implémenter un flux
Le reste des onglets fonctionne de la même façon que précédemment.
Dotnet France Association
47
SSIS – Implémenter un flux
4.2 Transformation du flux de données
A présent que nous avons vu comment définir les sources de nos données, nous allons voir
comment transformer ces données. Tout d’abord, nous verrons les transformations propres à la
Business Intelligence, puis les transformations de lignes et d’ensemble de lignes. Ensuite, nous
étudierons les transformations de fractionnement et jointure et nous finirons avec les audits de
transformation.
4.2.1
Transformations Business Intelligence
4.2.1.1 Transformation de dimension à variation lente
La tâche de transformation de dimension à variation lente permet de coordonner la mise à
jour et l’insertion de données dans les tables d’un entrepôt de données. Cette tâche dispose d’un
assistant pour sa configuration, il suffit de suivre les étapes et de remplir correctement les options.
4.2.1.2 Transformation de regroupement probable
La transformation de regroupement probable permet de trouver des groupes de lignes du
flux de données basées sur des recherches non-exact. Nous pouvons par exemple l’utiliser pour
trouver des lignes dupliquées.
4.2.1.3 Transformation de recherche floue
La tâche de transformation de recherche floue permet d’effectuer des recherches en utilisant
une logique de correspondance floue. Cette tâche utilise donc la correspondance floue pour
renvoyer un ou plusieurs résultats dont la correspondance est proche de la table de référence.
4.2.1.4 Transformation d’extraction de terme
La tâche transformation d’extraction de terme permet l’extraction d’une liste de mots et de
phrases à partir d’une colonne contenant du texte et en compte également le nombre d’occurrence.
Cette tâche ne peut extraire que deux types d’éléments : des noms seuls et des expressions
nominales qui sont composées d’au moins deux mots, un nom et un adjectif/un autre nom. De plus,
elle a deux limitations importantes : Elle ne peut effectuer des extractions que sur les types de
données DT_WSTR et DT_NTEXT et ne fonctionne que sur des textes en anglais.
Pour configurer cette tâche, nous commençons par sélectionner la colonne dont nous
souhaitons extraire des termes. Puis on spécifie le terme à rechercher et le nom de la colonne de
sortie. L’onglet d’exclusion permet de préciser un nom de table ou de vue qui contient une liste des
termes ou des phrases à exclure. Enfin, le dernier onglet nous permet de configurer le type de terme
que l’on souhaite obtenir (Nom, expression nominale, ou les deux) et les options de fréquence.
Par exemple, si l’on spécifie le type de terme nom, nous obtiendrons des noms : maison,
voiture, etc. Si on spécifie le type expression nominale nous obtiendrons : grosse maison, voiture
bleu, etc. Enfin si on spécifie nom et expression nominale, nous obtiendrons les deux types
d’exemples du dessus.
4.2.1.5 Transformation de recherche de terme
La tâche transformation de recherche de terme fait une correspondance entre les termes
d’une table et ces mêmes termes contenus dans un texte. Elle compte ensuite le nombre
d’occurrence des termes de la table dans le texte spécifié et les envoie avec le terme correspondant
dans la colonne de sortie. Pour configurer cette tâche, nous créons une connexion vers une base de
Dotnet France Association
48
SSIS – Implémenter un flux
données, puis nous spécifions la colonne contenant les termes à comparer et la colonne contenant le
texte.
4.2.1.6 Transformation de requête d’exploration de données
La tâche transformation de requête d’exploration de données nous permet d’exécuter une
requête DMX (Data Mining Extensions). En utilisant ce type de requête avec un modèle d’exploration
de données, il est possible de faire des prédictions basées sur les données du flux de données. Les
résultats des requêtes sont ajoutés en tant que nouvelle colonne dans le flux de données.
4.2.2
Transformations de lignes
4.2.2.1 Transformation de la table de caractères
La tâche de transformation de la table de caractères permet d’effectuer des modifications
sur les colonnes contenant des chaînes de caractères. La colonne modifiée peut soit remplacé celle
utilisé avant la transformation soit être ajoutée en tant que nouvelle colonne.
Nous pouvons effectuer les modifications de chaîne de caractères suivantes :
-
Lowercase (Minuscule) : Met tous les caractères en minuscule.
Uppercase (Majuscule) : Met tous les caractères en majuscule.
Byte Reversal (Inversion d’octet) : Inverse l’ordre des octets de chaque caractère.
Hiragana : Mappe des caractères katakana avec des caractères hiragana.
Katakana : Mappe des caractères hiragana avec des caractères katakana.
Half width (Demi-chasse) : Mappe des caractères à pleine chasse avec des caractères à demichasse.
Full Width (Pleine chasse) : Mappe des caractères à demi-chasse avec des caractères à pleine
chasse.
Linguistic casing (Casse Linguistique) : Applique la casse linguistique à la place de la casse
Système.
Traditional Chinese (Chinois traditionnel) : Mappe des caractères de chinois simplifié avec
des caractères de chinois traditionnels.
Nous pouvons utiliser plusieurs transformations sur la même colonne, cependant, certaines
transformations sont exclusives, cela n’a par exemple aucun sens d’appliquer la transformation
Majuscule et la transformation Minuscule à la même colonne.
L’onglet Error Outpur de cette tâche nous permet de définir le comportement de la tâche
lorsqu’il y a une troncation d’une chaîne de caractères au sein d’une colonne.
Ci-dessous, l’éditeur de la tâche.
Dotnet France Association
49
SSIS – Implémenter un flux
4.2.2.2 Transformation Copie de colonnes
La tâche transformation Copie de colonnes crée de nouvelles colonnes en copiant des
colonnes existantes. Nous pouvons ensuite utiliser ces copies pour des calculs, des transformations
ou des mappages.
Dotnet France Association
50
SSIS – Implémenter un flux
Ci-dessus, l’éditeur de la tâche Copie de colonnes, nous avons copié la colonne Nom et avons nommé
la nouvelle colonne Test.
Dotnet France Association
51
SSIS – Implémenter un flux
4.2.2.3 Transformation de conversion de données
La tâche Transformation de conversion de données permet de convertir des colonnes d’un
type de données à un autre. Ci-dessous, un aperçu de la transformation de deux colonnes de type
DT_STR (chaîne de caractères) en type DT_DATE pour l’un et en DT_UI1 pour l’autre. Pour rappel, le
chapitre 2 : Variables et expressions contient une liste de tous les types de données de SSIS.
Dotnet France Association
52
SSIS – Implémenter un flux
4.2.2.4 Transformation de colonne dérivée
La tâche de transformation de colonne dérivée permet d’intégrer des valeurs dérives
obtenues à partir d’expressions. Il est possible d’utiliser des variables SSIS ou le contenu des colonnes
du flux de données. Les valeurs obtenues peuvent soit remplacer les valeurs utilisées soit être
ajoutés à de nouvelles colonnes.
Nous avons ci-dessus l’éditeur de la transformation de colonne dérivée, nous avons crée une
nouvelle colonne Exp calculant la fonction exponentielle sur les éléments de la colonne Carré qui
contient le carré des éléments de la colonne Moyenne.
4.2.2.5 Transformation d’exportation de colonne
La tâche Transformation d’exploration de colonne peut lire les données du flux de données
puis les insérer dans un fichier. Par exemple, si on souhaite une liste d’images de produits, nous
pouvons utiliser cette tâche pour enregistrer les images dans des fichiers. La configuration est très
simple, je ne la détaillerai donc pas.
Dotnet France Association
53
SSIS – Implémenter un flux
4.2.2.6 Transformation d’importation de colonne
La tâche Transformation d’importation de colonne permet d’importer le contenu d’un
ensemble de fichiers et de les insérer dans une colonne d’image ou de texte du flux de données.
Comme pour l’exportation, la configuration est simple. Il est cependant nécessaire d’avoir une
colonne contenant le nom des fichiers à importer au sein de notre flux de données.
4.2.2.7 Composant Script
La tâche Composant Script n’est pas réellement une tâche de transformation malgré sa
position dans SSIS. En effet, elle peut servir de tâche de transformation si codée comme telle. Mais
nous pouvons également nous en servir comme source ou comme destination.
En tant que source, nous pouvons par exemple l’utiliser afin de lire un type de fichier
supporté par aucune connexion de SSIS.
De même, en tant que destination, elle permet d’écrire des données sur des formats nonsupportés par SSIS.
Et bien entendu, elle peut servir de tâche de transformation pour effectuer des actions
particulièrement précises qui ne sont pas disponibles avec d’autres tâches.
Comme nous pouvons le voir ci-dessus, il est nécessaire de sélectionner une de ces trois
options lors de la création de la tâche. Lors de la configuration, il faut également spécifier les entrées
et les sorties de nos tâches de script. Ensuite, il suffit de coder le script.
4.2.2.8 Transformation de commande OLE DB
La tâche de transformation de commande OLE DB permet l’exécution d’une requête SQL
pour chaque rangée dans le flux de données. Il n’y a que deux choses à configurer : déterminer le lieu
d’exécution de la requête et définir la requête.
Dotnet France Association
54
SSIS – Implémenter un flux
4.2.3
Transformations d’ensemble de lignes
4.2.3.1 Transformation d’agrégation
La tâche Transformation d’agrégation permet de combiner des informations dans une unique
valeur. Cette tâche se rapproche du GROUP BY en SQL. Nous pouvons voir l’éditeur de cette tâche cidessous.
Pour configurer cette tâche, nous commençons par choisir les tâches sur lesquelles nous
souhaitons faire une agrégation. Nous choisissons ensuite le type d’opération que nous allons
appliquer à chacune de nos colonnes. Nous pouvons effectuer les agrégations suivantes :
-
Average : Calcule la moyenne, utilisable uniquement sur des valeurs numériques
Count : Renvoie le nombre d’éléments contenus dans un groupe.
Count distinct : Renvoie le nombre de valeurs uniques figurant dans un groupe.
Maximum : Renvoie la valeur maximale d’un groupe, utilisable uniquement sur des valeurs
numériques.
Minimum : Renvoie la valeur minimale d’un groupe, utilisable uniquement sur des valeurs
numériques.
Sum : Effectue l’addition des valeurs d’une colonne.
Dotnet France Association
55
SSIS – Implémenter un flux
4.2.3.2 Transformation de tri
La tâche de transformation de tri permet de trier les lignes du flux de données. Pour
configurer cette tâche, nous devons spécifier les colonnes à trier ainsi que leur ordre de tri.
4.2.3.3 Transformation de l’échantillonnage du pourcentage
La tâche de transformation de l’échantillonnage du pourcentage permet de créer un
échantillon d’un flux de données. Cette tâche va sélectionner aléatoirement un pourcentage de
rangées que nous aurons déterminé du flux de données et créer une deuxième flux de données.
Nous aurons ainsi deux flux de données, l’un étant un exemple échantillon de l’autre. Pour configurer
cette tâche, nous définissons le pourcentage et les deux sorties des flux de données comme nous
pouvons le voir sur le l’image ci-dessous.
La dernière option permet de réduire la variabilité du random de la tâche, elle n’est à utilisé
que lors de tests.
4.2.3.4 Transformation d’échantillonnage de lignes
La tâche de transformation d’échantillonnage de lignes est très similaire à la transformation
d’échantillonnage du pourcentage ci-dessus. En effet, la seule différence est qu’au lieu de définir un
pourcentage pour définir la taille du flux de données échantillonné, nous déterminons un nombre de
lignes.
Dotnet France Association
56
SSIS – Implémenter un flux
4.2.3.5 Transformation de tableau croisé dynamique
La tâche de transformation de tableau croisé dynamique transforme un ensemble de
données normalisées en une version moins normalisée mais plus compacte grâce à un croisement
dynamique des données. Ainsi un flux de données entrant contenant de nombreuses lignes ressort
de cette tâche avec beaucoup moins de lignes grâce à une agrégation des données.
4.2.3.6 Transformation Unpivot
La transformation Unpivot permet de transformer des données non normalisées en données
normalisées. Par exemple, un ensemble de données répertorie des numéro de téléphone de clients
(chaque client à une seule ligne contenant tous ses numéros de téléphone : travail,maison,cellulaire).
Après la normalisation, nous aurons une ligne par numéro de téléphone.
4.2.4
Transformations de fractionnement et de jointure
4.2.4.1 Transformation de fractionnement conditionnel
La tâche de transformation de fractionnement conditionnel permet le fractionnement du flux
de données et l’envoi des lignes de données dans différentes sorties. Dans l’éditeur de cette tâche,
visible ci-dessous, nous définissons des conditions pour chaque branche du fractionnement. Lors de
l’exécution du package, chaque donnée est comparé avec la condition. Si elle répond à la première
condition, elle est envoyée dans la sortie correspondante, sinon elle passe aux conditions suivantes.
Nous allons prendre un exemple pour rendre tout cela plus clair. Nous allons déplacer des
élèves dans trois destinations différentes selon leurs notes.
Voici notre flux de données :
(J’utilise uniquement des fichiers plats dans cet exemple car ce sont les sources et les destinations les
plus simples à configurer.)
Dotnet France Association
57
SSIS – Implémenter un flux
Nous avons donc un fichier plat source qui contient tous les élèves, leurs notes et leur classe,
notre transformation de fractionnement conditionnel et trois fichiers plats de destination où seront
stockés les élèves selon leur niveau.
Voici le contenu de notre fichier plat Source :
(Nous utilisons ici des virgules pour séparer nos colonnes, vous pouvez utiliser ce que vous souhaitez
tant que vous définissez la bonne option dans la configuration de vos fichiers plats.)
Et voici l’éditeur de la tâche de fractionnement conditionnel :
Dotnet France Association
58
SSIS – Implémenter un flux
Nous voyons donc que les élèves ayant une moyenne strictement inférieur à 10 seront envoyés dans
le fichier plat Faible, ceux ayant une note supérieur ou égale à 10 et inférieur à 15 dans le fichier plat
moyen et enfin ceux ayant une note supérieur ou égale à 15 dans le fichier plat Bon.
Après l’exécution de nos tâches, voici le résultat :
4.2.4.2 Transformation multidiffusion
La tâche multidiffusion permet d’utiliser un unique flux de données et de l’utiliser comme
source pour de nombreux autres flux de données. Cette tâche copie simplement les données et
l’envoie dans plusieurs directions.
4.2.4.3 Transformation d’union totale
La tâche de transformation d’union totale permet de fusionner autant de flux de données
que l’on souhaite. Les données n’ont pas besoin d’être triées, le flux de données sortant ne l’est donc
pas non plus. Presque aucune configuration n’est nécessaire avec cette tâche, il suffit juste de
mapper les colonnes comme nous le souhaitons.
4.2.4.4 Transformation de fusion
La transformation de fusion permet de fusionner deux flux de données. Pour fusionner
proprement, il faut que les deux flux de données soient triés de la même manière. Il est donc
intéressant d’utiliser des tâches de tri afin de fournir à la tâche de fusion des données triées. Si vous
ne souhaitez pas utiliser de tâche de tri, et que vos données sont triées de la même façon, il est
possible de définir l’option IsSorted dans le menu avancé des sources.
4.2.4.5 Transformation de jointure de fusion
La transformation de jointure de fusion permet la fusion de deux flux de données ensemble
en exécutant une jointure INNER, LEFT ou FULL. Comme pour la transformation de fusion, les flux de
données doivent être triés de la même manière. Pour configurer cette tâche, il suffit de choisir le
type de joint que l’on souhaite utiliser puis de sélectionner les colonnes à fusionner.
Dotnet France Association
59
SSIS – Implémenter un flux
4.2.4.6 Transformation de recherche
La transformation de recherche se rapproche de la transformation de recherche floue, il n’y a
que le type de recherche qui change, la transformation de recherche ne prend que les résultats
exactes.
4.2.4.7 Transformation du cache
La transformation du cache envoie des données dans un gestionnaire de connexions du
cache qui seront utilisées par exemple par une transformation de recherche. Nous pouvons aussi
spécifier un enregistrement des données dans un fichier cache .caw.
4.2.5
Audit de transformation
4.2.5.1 Transformation d’audit
La tâche transformation d’audit nous permet d’ajouter des colonnes contenant des
informations à propos de l’exécution du package au flux de données. Ces colonnes d’audit peuvent
être placées dans une destination de données et fournir ainsi des informations sur l’heure de
l’exécution, sa durée et de nombreux autres éléments.
Nous pouvons placer les informations suivantes dans les colonnes d’audit :
-
Un GUID pour l’exécution du package.
L’heure du début d’exécution du package.
Le nom de la machine où le package a été exécuté.
Un GUID pour le package.
Un GUID pour la tâche du flux de données.
Le nom de la tâche du flux de données.
Le nom d’utilisateur.
La version du package.
Ci-dessous, nous pouvons voir l’éditeur de transformation Audit qui ajoute des colonnes
contenant le nom de la tâche du flux de données, le GUID du package, le GUID de l’exécution du
package et l’heure de début d’exécution du package.
Dotnet France Association
60
SSIS – Implémenter un flux
4.2.5.2 Transformation de calcul du nombre de lignes
La tâche de transformation de calcul du nombre de lignes nous permet de déterminer le
nombre de lignes contenues dans le flux de données. Ce nombre de lignes est ensuite stockée en
tant que variable du package. Nous pouvons ainsi l’utiliser dans des expressions pour modifier le flux
de contrôle ou le flux de données.
4.3 Destinations du flux de données
Maintenant que nous avons vu les sources et les transformations de SSIS, il ne nous reste plus
qu’à nous intéresser aux destinations. Cette partie sera courte car les tâches destination sont très
simples à utiliser, il suffit en général de créer une connexion vers le fichier où nous souhaitons
envoyer nos données. (Les parties concernant Analysis Services risquent de ne pas être clair, vous les
comprendrez plus tard lorsque vous lirez le cours SQL Server Analysis Services.)
4.3.1
Destination ADO.NET
La destination ADO.NET nous permet d’utiliser ADO.NET pour nous connecter à notre base
de données de destination. Comme pour toutes les destinations, il suffit de créer une connexion vers
la destination. Une fois que c’est fait, il faut mapper les colonnes et définir la structure du flux de
données à envoyer dans la base de données de destination.
Dotnet France Association
61
SSIS – Implémenter un flux
4.3.2
Destination d’apprentissage du modèle d’exploration de données
Cette tâche de destination permet l’utilisation d’un flux de données pour exercer un modèle
d’exploration de données (datamining). Exercer les modèles d’exploration permet ensuite de réaliser
des prédictions grâce à des connaissances provenant d’un ensemble de données.
4.3.3
Destination DataReader
La destination DataReader permet l’utilisation ADO.NET pour se connecter à une base de
données de destination. (Même fonction que destination ADO.NET)
4.3.4
Destination de traitement de dimension
La destination de traitement de dimension nous permet d’envoyer des données à une
dimension SQL Server Analysis Services. Nous pouvons ainsi fournir de nouvelles valeurs dans les
dimensions d’un cube Analysis Services.
4.3.5
Destination Excel
La destination Excel permet l’envoi de données dans un fichier Excel. Tout ce qu’il y a à faire
est de créer une connexion vers le fichier puis de mapper les colonnes d’entrée et de sortie.
4.3.6
Destination de fichier plat
La destination de fichier plat permet l’envoi de données dans un fichier texte. Le seul
élément de configuration différent des autres tâches de destination est le fait de préciser le
séparateur de colonnes (, ; tab etc.).
4.3.7
Destination OLE DB
La destination OLE DB nous permet de charger des données dans des bases de données
compatibles avec OLE DB.
4.3.8
Destination de traitement de partition
La destination de traitement de partition envoie des données dans une partition SQL Server
Analysis Services. En utilisant cette tâche, nous pouvons charger des données dans une partition de
cube Analysis Services.
4.3.9
Destination de fichier brut
La destination de fichier brut permet l’écriture des données sur un fichier brut. Le format de
ces fichiers est le format natif pour SSIS. En raison de cela, ils peuvent être écrits et lus très
rapidement par SSIS.
4.3.10 Destination de l’ensemble d’enregistrements
La destination de l’ensemble d’enregistrements envoie un flux de données à un
enregistrement qui est ensuite stocké en tant que variable de package. L’enregistrement peut ainsi
être utilisé dans tout le package.
4.3.11 Destination SQL Server Compact Edition
La destination SQL Server Compact Edition nous permet d’envoyer des données dans une
base de données SQL Server Compact. Les bases de données SQL Server Compact sont des versions
allégées destinées aux Smartphones ou PDA équipés de Windows Mobile.
Dotnet France Association
62
SSIS – Implémenter un flux
4.3.12 Destination SQL Server
La destination SQL Server permet d’insérer rapidement et en grosse quantité des données dans
une table ou une vue d’une base de données SQL Server local.
Dotnet France Association
63
SSIS – Implémenter un flux
5 Conclusion
A présent, vous avez presque toutes les clés pour le développement de package SQL Server
Integration Services. N’hésitez pas à créer des packages pour vous entrainer et apprendre à maitriser
chaque tâche. Il ne reste qu’un chapitre dans cette partie, à propos de tout ce que nous n’avous pas
vu à propos de SSIS (Debugging, gestionnaire d’évènements, historique) puis nous nous intéresserons
à la maintenance d’une solution SSIS.
Dotnet France Association
Téléchargement