ssis - variables et expressions
Post on 02-Jun-2018
367 Views
Preview:
TRANSCRIPT
-
8/10/2019 SSIS - Variables Et Expressions
1/14
SSIS : Variables et
Expressions
Z
Thibault Denizet
-
8/10/2019 SSIS - Variables Et Expressions
2/14
Dotnet France Association
2 SQL Server : Mettre en place une solution SSIS [02/07/09]
Sommaire
1 Introduction ..................................................................................................................................... 3
2 Les Variables .................................................................................................................................... 4
2.1 La fentre Variables ................................................................................................................. 4
2.2 Les types de donnes sous SSIS ............................................................................................... 5
3 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
4 Conclusion ..................................................................................................................................... 14
-
8/10/2019 SSIS - Variables Et Expressions
3/14
Dotnet France Association
3 SQL Server : Mettre en place une solution SSIS [02/07/09]
1 IntroductionDans 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.
-
8/10/2019 SSIS - Variables Et Expressions
4/14
Dotnet France Association
4 SQL Server : Mettre en place une solution SSIS [02/07/09]
2 Les VariablesCe 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 diffrentesparties 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.
-
8/10/2019 SSIS - Variables Et Expressions
5/14
Dotnet France Association
5 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 dallouerla 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 Equivalent C# DescriptionDT_BOOL bool Valeur boolenne
DT_BYTES Valeur de donnes binaires. (Longueur variable mais
infrieur 8000 octets.)
DT_CY Valeur de devise. Entier sign de 8 octets avec une
chelle de 4 et une prcision maximale de 19 chiffres.
DT_DATE Datetime Structure de date comprenant lanne, le mois, le jour,
les heures, les minutes, les secondes et les fractions de
seconde.
DT_DBTIME Structure dheure comprenant les heures, les minutes
et les secondes.
DT_DBTIME2 Structure dheure comprenant les heures, les minutes,les secondes et les fractions de seconde.
DT_DBTIMESTAMP Structure dhorodateur comprenant lanne, le mois, le
jour, les heures, les minutes, les secondes et les
-
8/10/2019 SSIS - Variables Et Expressions
6/14
Dotnet France Association
6 SQL Server : Mettre en place une solution SSIS [02/07/09]
fractions de seconde.
DT_DBTIMESTAMP2 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 packagegrce une gestion de la mmoire optimale.
-
8/10/2019 SSIS - Variables Et Expressions
7/14
-
8/10/2019 SSIS - Variables Et Expressions
8/14
Dotnet France Association
8 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 boolenssont tout simplement true et false, ils nincluent pas de guillemets et ne sontpas 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 lavariable. 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
-
8/10/2019 SSIS - Variables Et Expressions
9/14
Dotnet France Association
9 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]
-
8/10/2019 SSIS - Variables Et Expressions
10/14
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 Description Exemple
(type de donne) Convertit une expression en un nouveau type de
donnes
(DT_I4)EXP(7)
() Parenthses Dfinit lordre dvaluation des expressions (3+4)*(5+2)=49
+ Addition Ajoute deux expressions numriques 3+4=7
+ Concatnation Concatne deux expressions "Alice "+ " "+ "Canot"
- Soustraction Soustrait la deuxime expression numrique la
premire
4-3=1
- Ngation Inverse le signe dune expression numrique -137
* Multiplication Multiplie deux expressions numriques 3*4=12
/ Division Divise la premire expression numrique par la
deuxime
12/4=3
% Modulo Donne le reste entier de la division 13%3=1|| Ou logique Effectue une opration OU/OR logique @Var 2
&& Et logique Effectue une opration ET/AND logique @Var >1&& @Var2>4
! Not logique Inverse un oprande boolen. !@Bool
| Opration OR inclusive
au niveau du bit
Effectue une opration OR au niveau du bit avec
deux valeurs entires
@Var | @Var2
^ Opration OR exclusive
au niveau du bit
Effectue une opration OR exclusive au niveau
du bit avec deux valeurs entires
@Var ^ @Var2
& AND au niveau du bit Effectue une opration AND au niveau du bit
avec deux valeurs entires
@Var & @Var2
~ Opration Not au
niveau du bit
Effectue une ngation au niveau du bit dun
entier
~@Var2
== Egalit Compare deux expressions pour dterminer si
elles sont gales
@Var == @Var2
!= Ingalit Compare deux expressions afin de dterminer si
elles sont diffrentes
@Var != @Var2
> Suprieur Effectue une comparaison pour dterminer si la
premire expression est suprieure la
deuxime
@Var > @Var2
< Infrieur Effectue une comparaison pour dterminer si la
premire expression est infrieure la deuxime
@Var < @Var2
>= Suprieur ou gal Effectue une comparaison pour dterminer si la
premire expression est suprieure ou gale ladeuxime
@Var >= @Var2
-
8/10/2019 SSIS - Variables Et Expressions
11/14
Dotnet France Association
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 Rsultat
ABS Renvoie la valeur absolue d'une expression numrique. ABS(-100) 100
EXP Renvoie la valeur exponentielle dune expression
numrique.
EXP(0) 1
CEILING Arrondit lentier suprieur. CEILING(43,67) 44
FLOOR Arrondit lentier infrieur. FLOOR(43,67) 43
LN Renvoie le logarithme nprien dune expression
numrique.
LN(1) 0
LOG Renvoie le logarithme dcimal dune expression
numrique.
LOG(10) 1
POWER Renvoie le rsultat de llvation dune expressionnumrique une puissance donne. POWER(4,2) 16
ROUND Renvoie une expression numrique, arrondie la
prcision indique.
ROUND(37.4567,2) 37.46
SIGN Renvoie le signe (+ ou -) dune expression numrique ou
0.
SIGN(100) +
SQUARE Renvoie le carr dune expression numrique. SQUARE(5) 25
SQRT Renvoie la racine carre dune expression numrique. SQRT(36) 6
Les fonctions de chanes de caractres suivantes sont utilisables dans les expressions :
Fonction Description Exemple Rsultat
CODEPOINT Renvoie la valeur du code Unicode (en
dcimal) du caractre situ
lextrme gauche dune chane de
caractre.
CODEPOINT("Bonjour") 66
FINDSTRING Renvoie l'index de base 1 de
l'occurrence spcifie d'une chane de
caractres dans une expression.
FINDSTRING("A B C A",A,2) 7
HEX Renvoie une chane de caractres
reprsentant la valeur hexadcimale
dun entier.
HEX(977) 3D1
LEN Renvoie le nombre de caractres dans
une chane de caractres.
LEN("A B C") 5
LOWER Renvoie une chane de caractres en
minuscule.
LOWER("Abc Def") abc def
LTRIM Renvoie une chane de caractres
aprs avoir supprim les espaces de
dbut.
LTRIM(" A B") A B
REPLACE Renvoie une chane de caractres
aprs le remplacement dune chane
situe dans lexpression.
REPLACE("Bonjour
Martin","Martin","Louis")
Bonjour
Louis
REPLICATE Renvoie une chane de caractresrplique un certain nombre de fois. REPLICATE("La",4) LaLaLaLa
REVERSE Renvoie une chane de caractres
dans un ordre invers.
REVERSE("ABC") CBA
-
8/10/2019 SSIS - Variables Et Expressions
12/14
Dotnet France Association
12 SQL Server : Mettre en place une solution SSIS [02/07/09]
RIGHT Renvoie la partie d'une chane de
caractres commenant au nombre de
caractres spcifi, partir de la
droite.
RIGHT("Bonjour !",6) jour !
RTRIM Renvoie une chane de caractres
aprs la suppression des espaces de
fin.
RTRIM("A B ") A B
SUBSTRING Renvoie une partie dune chane de
caractres.
SUBSTRING("Bonjour",3,2) jo
TRIM Renvoie une chane de type caractre
aprs la suppression des espaces de
dbut et de fin.
TRIM(" A B ") A B
UPPER Renvoie une chane de caractres en
majuscule.
UPPER("Bonjour") BONJOUR
Nous pouvons utiliser les fonctions de date suivantes dans les expressions :
Fonction Description Exemple Rsultat
DATEADD Renvoie une nouvelle
valeur DT_DBTIMESTAMP
en ajoutant un intervalle
de date ou d'heure une
date spcifie.
DATEADD("day",100,
(DT_DBTIMESTAMP)"1/1/2009")
2009-04-
11
00 :00 :00
DATEDIFF Renvoie la diffrence de
temps entre deux dates.
DATEDIFF("month",
(DT_DBTIMESTAMP)"1/1/2009",
(DT_DBTIMESTAMP"4/1/2009")
4
DATEPART Renvoie un entier
reprsentant une partied'une date.
DATEPART("year",
(DT_DBTIMESTAMP)"4/28/2009")
2009
DAY Renvoie un entier
reprsentant le jour de la
date spcifie.
DAY((DT_DBTIMESTAMP)"4/28/2009") 28
GETDATE Renvoie la date actuelle
du systme.
GETDATE() 2009-08-
19
13 :59 :37
GETUTCDATE Renvoie la date actuelle
du systme en temps UTC
(Universal Time
Coordinate ou GreenwichMean Time).
GETUTCDATE() 2009-08-
19
12 :06 :06
MONTH Renvoie un entier
reprsentant le mois de
la date spcifie.
MONTH((DT_DBTIMESTAMP)"4/28/2009") 4
YEAR Renvoie un entier
reprsentant l'anne de
la date spcifie.
YEAR((DT_DBTIMESTAMP)"4 /28/2009") 2009
-
8/10/2019 SSIS - Variables Et Expressions
13/14
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
d'une expression.
ISNULL(@Var)
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*
-
8/10/2019 SSIS - Variables Et Expressions
14/14
Dotnet France Association
14 SQL Server : Mettre en place une solution SSIS [02/07/09]
4 ConclusionCe 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.
top related