SSIS - Variables Et Expressions

Embed Size (px)

Citation preview

  • 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.