Vous êtes sur la page 1sur 14

SSIS : Variables et

Expressions

Thibault Denizet

SQL Server : Mettre en place une solution SSIS [02/07/09]

Sommaire

Introduction ..................................................................................................................................... 3

Les Variables .................................................................................................................................... 4

2.1

La fentre Variables................................................................................................................. 4

2.2

Les types de donnes sous SSIS ............................................................................................... 5

Expressions ...................................................................................................................................... 7
3.1

Littral ..................................................................................................................................... 7

3.2

Identificateurs ......................................................................................................................... 8

3.2.1

Identificateurs standards et qualifis .............................................................................. 8

3.2.2

Identificateurs de lignage ................................................................................................ 9

3.2.3

Noms de variables ........................................................................................................... 9

3.2.4

Noms de colonnes ........................................................................................................... 9

3.3

Oprateurs............................................................................................................................. 10

3.4

Fonctions ............................................................................................................................... 11

Conclusion ..................................................................................................................................... 14

Dotnet France Association

SQL Server : Mettre en place une solution SSIS [02/07/09]

1 Introduction
Dans le chapitre prcdent, nous avons dcouvert quelques fonctionnalits essentielles
lutilisation de SSIS. Nous allons prsent approfondir ces dernires mais galement dcouvrir de
nombreuses nouveauts. En effet, linterface de SSIS est trs riche et de nombreuses actions sont
assimiler pour parvenir la cration dun package adapt vos besoins.
Ce chapitre sera uniquement thorique et vous apportera les connaissances ncessaires
lutilisation des variables et des expressions dans les diverses tches. Ces dernires feront lobjet de
notre prochain chapitre et vous permettront de mettre en pratique tout ce que nous verrons ici.

Dotnet France Association

SQL Server : Mettre en place une solution SSIS [02/07/09]

2 Les Variables
Ce chapitre sera consacr aux variables qui reprsentent un lment indispensable pour votre
futur package. Elles sont trs souvent utilises dans les tches du flux de contrle ou du flux de
donnes que nous dtaillerons par la suite.
Les variables ont une grande utilit dans les packages SSIS, elles permettent de lier diffrentes
parties dun mme package, dappliquer des contraintes pour lexcution de certaines tches ou
encore dactiver certaines fonctionnalits selon les valeurs renvoyes grce au gestionnaire
dvnements.

2.1 La fentre Variables


Les variables sont gres dans la fentre du mme nom obtenu dans longlet Affichage >
Autres fentres > Variables.
Nous allons rapidement voir les lments de la barre doutils avant danalyser plus en profondeur le
contenu de cette fentre.

Cet lment permet dajouter une variable.


Cet outil permet de supprimer une variable (Comme dit plus haut, vous ne pouvez
supprimez que les variables que vous avez cres).
Ce bouton vous permet dafficher ou de cacher les variables systmes.
Ce bouton vous permet dafficher les variables de vos tches en plus de celles lies tout le
package (Ces dernires sont affiches par dfaut).
Enfin ce dernier lment affiche une fentre de configuration permettant de choisir
quelles colonnes vous souhaitez afficher.
Par dfaut, les colonnes espaces de nom et Raise change event (Dclencher l'vnement
lorsque la valeur de la variable change) ne sont pas affiches, vous devrez les activer dans la fentre
de configuration si vous souhaitez les voir. Lespace de nom est un moyen simple de regrouper des
variables pour faciliter le dbogage et la maintenance.
Sous SSIS, les variables systmes sont dans lespace de nom System et les variables cres
par lutilisateur sont par dfaut dans lespace de nom User. Il est possible de changer lespace de
nom de ces dernires en affichant la colonne et en lditant.
Voici un aperu de la fentre Variables affichant cinq variables dont trois appartiennent lespace de
nom User, et deux lespace de nom System.

Dotnet France Association

SQL Server : Mettre en place une solution SSIS [02/07/09]

Dans cette fentre, nous pouvons voir :


-

Le nom de la variable
Son scope (porte), cest--dire, les lments pour lesquels cette variable est accessible. Ici,
les deux variables Test sont accessibles par tous les lments du package. La variable
Compteur nest quant elle accessible que dans le conteneur de Squence dans lequel nous
lavons cre. Toutes les variables System sont bien sr accessibles dans tout le package.
Le type de donne (Data type) afin dallouer la bonne quantit de mmoire.
Les diffrents types disponibles sont : Boolean, Byte, Char, Datetime, DBnull, Double, Int16,
Int32, Int64, Object, Sbyte, Single, String, UInt32, UInt64.
La valeur de la variable.
Lespace de nom
La dernire colonne, Raise Change Event, change de valeur (de false true, et inversement)
si la valeur de la variable est modifie. Nous pouvons ainsi crer des vnements avec
comme dclencheur la modification dune variable. Nous approfondirons cela avec le
gestionnaire dvnements.

2.2 Les types de donnes sous SSIS


SSIS partage de nombreux types de donnes avec les autres langages de la plateforme .NET.
Cependant, lors de lexcution du package et de lentre des donnes dans le flux de donnes, les
types des variables sont convertis en type Integration Services. Il est ncessaire de connaitre ces
noms de types, car il arrive frquemment de devoir modifier le type dune variable. Voici un tableau
regroupant ces types de variables avec leur correspondance en C # quand cest possible, ainsi quune
description.
Type de donnes SSIS
DT_BOOL
DT_BYTES

Equivalent C#
bool

DT_CY
DT_DATE

DT_DBTIME
DT_DBTIME2
DT_DBTIMESTAMP

Datetime

Description
Valeur boolenne
Valeur de donnes binaires. (Longueur variable mais
infrieur 8000 octets.)
Valeur de devise. Entier sign de 8 octets avec une
chelle de 4 et une prcision maximale de 19 chiffres.
Structure de date comprenant lanne, le mois, le jour,
les heures, les minutes, les secondes et les fractions de
seconde.
Structure dheure comprenant les heures, les minutes
et les secondes.
Structure dheure comprenant les heures, les minutes,
les secondes et les fractions de seconde.
Structure dhorodateur comprenant lanne, le mois, le
jour, les heures, les minutes, les secondes et les

Dotnet France Association

SQL Server : Mettre en place une solution SSIS [02/07/09]


fractions de seconde.
Structure dhorodateur comprenant lanne, le mois, le
jour, les heures, les minutes, les secondes et les
fractions de seconde.
DT_DBTIMESTAMPOFFSET
Structure dhorodateur comprenant lanne, le mois, le
jour, les heures, les minutes, les secondes et les
fractions
de
seconde.
Contrairement

DT_DBTIMESTAMP et DBTIMESTAMP2, celui-ci a un


dcalage du fuseau horaire.
DT_DECIMAL
Entier non sign de 12 octets.
DT_FILETIME
Valeur 64 bits reprsentant le nombre dintervalles de
100 nanosecondes depuis le 1er Janvier 1601.
DT_GUID
Identificateur global unique.
DT_I1
Entier sign de 1 octet.
DT_I2
Short(int16)
Entier sign de 2 octets.
DT_I4
Int(int32)
Entier sign de 4 octets.
DT_I8
Long(int64)
Entier sign de 8 octets.
DT_NUMERIC
Entier non sign de 16 octets
DT_R4
Float(single)
Valeur en virgule flottante simple prcision.
DT_R8
Double
Valeur en virgule flottante double prcision.
DT_STR
String
Chane de caractres ANSI/MBCS. Longueur maximale
8000 caractres.
DT_UI1
Entier non sign de 1 octet.
DT_UI2
Entier non sign de 2 octets.
DT_UI4
Uint(UInt32)
Entier non sign de 4 octets.
DT_UI8
Ulong(Uint64) Entier non sign de 8 octets.
DT_WSTR
String
Chane de caractre Unicode. Longueur maximale 4000
caractres.
DT_IMAGE
Valeur binaire avec une taille maximale de
2 147 483 647 octets.
DT_NTEXT
Chane de caractres Unicode avec une longueur
maximale de 1 073 741 823 caractres
DT_TEXT
Chane de caractres ANSI/MBCS dune longueur
maximale de 2 147 483 647 caractres
Il faut savoir que les variables utilises dans SSIS ont un trs fort typage afin doptimiser
rapidit et performance lors de lexcution du package grce une gestion de la mmoire optimale.
DT_DBTIMESTAMP2

Dotnet France Association

SQL Server : Mettre en place une solution SSIS [02/07/09]

3 Expressions
Les expressions permettent de modifier le comportement dun package grce aux conditions et
aux modifications de variables, proprits, etc. pendant lexcution du package. La syntaxe des
expressions sous Integration Services est trs proche de celle du langage C#. Une expression est
compose dun ensemble de littraux, didentificateurs, doprateurs et de fonctions.
Trois lments jouent un rle dans lefficacit des expressions : la grammaire dexpression,
lvaluateur dexpression et le gnrateur dexpression.
La grammaire dexpression dfinit la syntaxe, ainsi que les oprateurs, les fonctions et les types de
donnes utilisables.
Lvaluateur dexpression analyse les expressions afin de vrifier quelles respectent la grammaire
dexpression.
Le gnrateur dexpression apporte des outils pour simplifier la cration dexpression.

3.1 Littral
Un littral est utilis dans une expression afin de reprsenter les valeurs des variables qui sont
connues avant lexcution du package. Un littral peut tre de type Chane de caractres, Boolen ou
numrique.
Lutilisation des littraux de type chane de caractre se font grce des doubles guillemets .
Exemple : (DT_I4)CODEPOINT("z") retourne la code Unicode de la lettre z.
Des caractres dchappement peuvent tre utiliss afin deffectuer diverses actions, en voici une
liste :

\a : Bip sonore
\b : Espacement arrire
\f : Saut de page (Form feed)
\n : Saut de ligne
\r : Retour la ligne
\t : Tabulation horizontale
\v : Tabulation verticale
\" : Double guillemets
\\ : Anti-slash
\xhhh : Caractre unicode dont la valeur en hxadcimal est hhh

Les littraux numriques peuvent tre exprims comme des entiers, des dcimaux ou en notation
scientifique. Nous pouvons y inclure un signe ngatif mais pas de caractre de groupage de chiffres
comme les virgules dans la norme USA. Exemple ne pas faire : 1, 000,000.
Les littraux numriques peuvent inclure un suffixe afin de spcifier le type de donnes y assigner.
Voici une liste de ces suffixes :
Description
Entier
Entier non-sign
Entier long
Entier long non-sign

Suffixe
Aucun
U
L
UL
Dotnet France Association

SQL Server : Mettre en place une solution SSIS [02/07/09]


F
Rel (Valeur 32bits virgule flottante)
L
Rel (Valeur 64bits virgule flottante)
Les suffixes ne sont pas sensibles la casse, mettre U ou u revient donc au mme.
Exemple : (DT_I4)SQUARE( 4u )
Les littraux boolens sont tout simplement true et false, ils nincluent pas de guillemets et ne sont
pas sensibles la casse.

3.2 Identificateurs
Les identificateurs sont utiliss dans les expressions afin de reprsenter des valeurs qui ne
sont pas connues avant lexcution du package. Les identificateurs sont des variables ou des
colonnes.

3.2.1

Identificateurs standards et qualifis


Pour la reprsentation des variables, il est ncessaire de mettre un @ avant le nom de la
variable. Il ne fait pas parti du nom de la variable, il permet simplement lvaluateur dexpression
didentifier une variable et de la remplacer par sa valeur en consquence.
Exemples :
@Compteur
@_variable
@NomDuProjet
Il est galement possible de reprsenter des colonnes :
Exemples :
Client
Etudiant#
Deux types didentificateurs peuvent tre utiliss par les expressions : les identificateurs standards et
les identificateurs qualifis.
Comme le nom le laisse entendre, les identificateurs qualifis ncessitent des qualificateurs
supplmentaires par rapport aux identificateurs standards. Par exemple, la colonne Customer ou la
variable Compteur sont des identificateurs standards.
Voici la liste des rgles que doivent respecter les identificateurs standards :
-Le premier caractre du nom doit tre une lettre ou un trait de soulignement _ .
-Les autres caractres peuvent tre :
Des nombres
Des lettres
le trait de soulignement _
les caractres @, $ et #.
Tous les identificateurs qui ne respectent pas ces rgles sont des identificateurs qualifis, nous
devons alors utiliser des crochets [] comme dlimiteur. Par exemple, les identificateurs [Classe 1],
[12Nom] ou [Client] sont des identificateurs qualifis. En effet, le premier contient un espace, le

Dotnet France Association

SQL Server : Mettre en place une solution SSIS [02/07/09]


second commence par un chiffre et le dernier contient un caractre qui nest pas autoris dans les
identificateurs standards.
En raison de cette syntaxe, il nest pas possible dutiliser des noms de colonnes tels que Colonne [10]
ou [Colonne] 1, il faudra renommer cette colonne sans utiliser de crochets.

3.2.2

Identificateurs de lignage
Les identificateurs de lignage sont utiliss dans les expressions afin de faire rfrence aux
colonnes. Ils sont automatiquement affects la cration du package, pour les utiliser il suffit de
mettre le signe dise (#) avant son identificateur de lignage.
Exemple : #169
3.2.3

Noms de variables
Si deux variables ayant la mme porte ont le mme nom, il est ncessaire dapporter des
informations complmentaires pour viter tout problme. Deux variables peuvent avoir le mme
nom uniquement si elles ont un espace de nom diffrent. Il est donc indispensable de pouvoir
prciser un espace de nom lors de lutilisation dune variable afin dviter toute confusion.
Nous utilisons pour cela un oprateur de rsolution despace de noms :: que nous plaons entre
lespace de nom et le nom de la variable.
Le double caractre :: ntant pas autoris par les identificateurs standards, il est ncessaire de
mettre des crochets, voici quelques exemples :
@[System :: Username] : va chercher la variable Username dans lespace de nom System.
@[User :: Username] : va chercher la variable Compteur dans lespace de nom User.
3.2.4

Noms de colonnes
Comme pour les variables, si deux colonnes ont le mme nom, il est ncessaire dutiliser des
informations complmentaires. Les colonnes nayant pas despace de noms, nous allons nous servir
de la source de la colonne, que ce soit le flux de donnes source ou loutil de transformation qui a
cr la colonne. Nous lions la source et le nom de la colonne avec un point. Si lidentificateur nest
pas standard, on rajoute des crochets.
On obtient ainsi ce genre dlment :
FlatFileSource.AdresseClient
ConversionDeDonnes.AdresseClient
FlatFileSource.[ Etudiant]
[Conversion de donnes].[7TotalSemaine]

Dotnet France Association

10

SQL Server : Mettre en place une solution SSIS [02/07/09]

3.3 Oprateurs
Les oprateurs permettent les calculs et les conditionnements, voici un tableau les
regroupant :
Oprateur
(type de donne)

Description
Convertit une expression en un nouveau type de
donnes
() Parenthses
Dfinit lordre dvaluation des expressions
+ Addition
Ajoute deux expressions numriques
+ Concatnation
Concatne deux expressions
- Soustraction
Soustrait la deuxime expression numrique la
premire
- Ngation
Inverse le signe dune expression numrique
* Multiplication
Multiplie deux expressions numriques
/ Division
Divise la premire expression numrique par la
deuxime
% Modulo
Donne le reste entier de la division
|| Ou logique
Effectue une opration OU/OR logique
&& Et logique
Effectue une opration ET/AND logique
! Not logique
Inverse un oprande boolen.
| Opration OR inclusive Effectue une opration OR au niveau du bit avec
au niveau du bit
deux valeurs entires
^ Opration OR exclusive Effectue une opration OR exclusive au niveau
au niveau du bit
du bit avec deux valeurs entires
& AND au niveau du bit
Effectue une opration AND au niveau du bit
avec deux valeurs entires
~ Opration Not au Effectue une ngation au niveau du bit dun
niveau du bit
entier
== Egalit
Compare deux expressions pour dterminer si
elles sont gales
!= Ingalit
Compare deux expressions afin de dterminer si
elles sont diffrentes
> Suprieur
Effectue une comparaison pour dterminer si la
premire expression est suprieure la
deuxime
< Infrieur
Effectue une comparaison pour dterminer si la
premire expression est infrieure la deuxime
>= Suprieur ou gal
Effectue une comparaison pour dterminer si la
premire expression est suprieure ou gale la
deuxime
<= Infrieur ou gal
Effectue une comparaison pour dterminer si la
premire expression est infrieure ou gale la
deuxime
?: Conditionnel
Renvoie une des deux expressions en fonction de
l'valuation d'une expression boolenne.

Dotnet France Association

Exemple
(DT_I4)EXP(7)
(3+4)*(5+2)=49
3+4=7
"Alice "+ " "+ "Canot"
4-3=1
-137
3*4=12
12/4=3
13%3=1
@Var <1 ||@Var2 >2
@Var >1&& @Var2>4
!@Bool
@Var | @Var2
@Var ^ @Var2
@Var & @Var2
~@Var2
@Var == @Var2
@Var != @Var2
@Var > @Var2

@Var < @Var2


@Var >= @Var2

@Var <= @Var2

@Compteur
==
@Max?
@Retour:@Compte

11

SQL Server : Mettre en place une solution SSIS [02/07/09]

3.4 Fonctions
Les fonctions permettent le traitement des donnes dans les expressions, il ny a pas
dlments compliqus, nous allons juste faire un listing des fonctions disponibles et de leur actions.
Les expressions supportent les diffrentes fonctions mathmatiques suivantes :
Fonction Description
Exemple
ABS
Renvoie la valeur absolue d'une expression numrique.
ABS(-100)
EXP
Renvoie la valeur exponentielle dune expression EXP(0)

Rsultat
100
1

numrique.
CEILING
FLOOR
LN
LOG
POWER
ROUND
SIGN
SQUARE
SQRT

Arrondit lentier suprieur.


Arrondit lentier infrieur.
Renvoie le logarithme nprien dune expression
numrique.
Renvoie le logarithme dcimal dune expression
numrique.
Renvoie le rsultat de llvation dune expression
numrique une puissance donne.
Renvoie une expression numrique, arrondie la
prcision indique.
Renvoie le signe (+ ou -) dune expression numrique ou
0.
Renvoie le carr dune expression numrique.
Renvoie la racine carre dune expression numrique.

CEILING(43,67)
FLOOR(43,67)
LN(1)

44
43
0

LOG(10)

POWER(4,2)

16

ROUND(37.4567,2) 37.46
SIGN(100)

SQUARE(5)
SQRT(36)

25
6

Les fonctions de chanes de caractres suivantes sont utilisables dans les expressions :
Fonction
CODEPOINT

Description
Renvoie la valeur du code Unicode (en
dcimal) du caractre situ
lextrme gauche dune chane de
caractre.
FINDSTRING Renvoie l'index de base 1 de
l'occurrence spcifie d'une chane de
caractres dans une expression.
HEX
Renvoie une chane de caractres
reprsentant la valeur hexadcimale
dun entier.
LEN
Renvoie le nombre de caractres dans
une chane de caractres.
LOWER
Renvoie une chane de caractres en
minuscule.
LTRIM
Renvoie une chane de caractres
aprs avoir supprim les espaces de
dbut.
REPLACE
Renvoie une chane de caractres
aprs le remplacement dune chane
situe dans lexpression.
REPLICATE
Renvoie une chane de caractres
rplique un certain nombre de fois.
REVERSE
Renvoie une chane de caractres
dans un ordre invers.

Exemple
CODEPOINT("Bonjour")

Rsultat
66

FINDSTRING("A B C A",A,2)

HEX(977)

3D1

LEN("A B C")

LOWER("Abc Def")

abc def

LTRIM(" A B")

AB

REPLACE("Bonjour
Martin","Martin","Louis")

Bonjour
Louis

REPLICATE("La",4)

LaLaLaLa

REVERSE("ABC")

CBA

Dotnet France Association

12

SQL Server : Mettre en place une solution SSIS [02/07/09]


RIGHT

RTRIM

SUBSTRING
TRIM

UPPER

Renvoie la partie d'une chane de


caractres commenant au nombre de
caractres spcifi, partir de la
droite.
Renvoie une chane de caractres
aprs la suppression des espaces de
fin.
Renvoie une partie dune chane de
caractres.
Renvoie une chane de type caractre
aprs la suppression des espaces de
dbut et de fin.
Renvoie une chane de caractres en
majuscule.

RIGHT("Bonjour !",6)

jour !

RTRIM("A B

AB

")

SUBSTRING("Bonjour",3,2)

jo

TRIM("

AB

AB

")

UPPER("Bonjour")

BONJOUR

Nous pouvons utiliser les fonctions de date suivantes dans les expressions :
Fonction
DATEADD

DATEDIFF

DATEPART

DAY

GETDATE

Description
Renvoie une nouvelle
valeur DT_DBTIMESTAMP
en ajoutant un intervalle
de date ou d'heure une
date spcifie.
Renvoie la diffrence de
temps entre deux dates.

Exemple
DATEADD("day",100,
(DT_DBTIMESTAMP)"1/1/2009")

DATEDIFF("month",
(DT_DBTIMESTAMP)"1/1/2009",
(DT_DBTIMESTAMP"4/1/2009")
Renvoie
un
entier DATEPART("year",
reprsentant une partie (DT_DBTIMESTAMP)"4/28/2009")
d'une date.
Renvoie
un
entier DAY((DT_DBTIMESTAMP)"4/28/2009")
reprsentant le jour de la
date spcifie.
Renvoie la date actuelle GETDATE()

du systme.

Rsultat
2009-0411
00 :00 :00

2009

28

2009-0819
13 :59 :37
2009-0819
12 :06 :06

GETUTCDATE Renvoie la date actuelle GETUTCDATE()


du systme en temps UTC
(Universal
Time
Coordinate ou Greenwich
Mean Time).
MONTH
Renvoie
un
entier MONTH((DT_DBTIMESTAMP)"4/28/2009") 4
reprsentant le mois de
la date spcifie.
YEAR
Renvoie
un
entier YEAR((DT_DBTIMESTAMP)"4 /28/2009")
2009
reprsentant l'anne de
la date spcifie.

Dotnet France Association

13

SQL Server : Mettre en place une solution SSIS [02/07/09]


Les fonctions Null suivantes sont supportes par les expressions :
Fonction Description
Exemple
ISNULL
Renvoie une valeur boolenne base sur le test du caractre NULL ISNULL(@Var)
d'une expression.
NULL
Renvoie une valeur NULL d'un type de donnes demand.
NULL(DT_STR,10)
*La plupart des lments des tableaux de ce chapitre proviennent du MSDN SSIS*

Dotnet France Association

14

SQL Server : Mettre en place une solution SSIS [02/07/09]

4 Conclusion
Ce chapitre sur les variables prend fin, nous avons pu dcouvrir la diversit des types de
variables prsents dans SSIS ainsi que les fonctions qui permettent de les exploiter. Dans le chapitre
3, nous allons lister et utiliser chaque tche de flux de donnes et de flux de contrle et mettre en
pratique les connaissances acquises dans ce chapitre.

Dotnet France Association

Vous aimerez peut-être aussi