Académique Documents
Professionnel Documents
Culture Documents
SSIS - Variables Et Expressions PDF
SSIS - Variables Et Expressions PDF
Expressions
Thibault Denizet
Sommaire
Introduction ..................................................................................................................................... 3
2.1
La fentre Variables................................................................................................................. 4
2.2
Expressions ...................................................................................................................................... 7
3.1
Littral ..................................................................................................................................... 7
3.2
Identificateurs ......................................................................................................................... 8
3.2.1
3.2.2
3.2.3
3.2.4
3.3
Oprateurs............................................................................................................................. 10
3.4
Fonctions ............................................................................................................................... 11
Conclusion ..................................................................................................................................... 14
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.
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.
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.
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
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
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
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]
10
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.
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
@Compteur
==
@Max?
@Retour:@Compte
11
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
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
12
RTRIM
SUBSTRING
TRIM
UPPER
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
13
14
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.