Expressions Integration Services avancées

Cette section donne des exemples d'expressions avancées qui combinent plusieurs opérateurs et fonctions. Si une expression est utilisée dans une contrainte de priorité ou dans la transformation de fractionnement conditionnel, elle doit renvoyer une valeur booléenne. Toutefois, cette restriction ne s'applique pas aux expressions utilisées dans les expressions de propriété, les variables, la transformation de colonne dérivée ou le conteneur de boucles For.

Les exemples suivants utilisent la base de données AdventureWorks2008R2. Chaque exemple indique les tables utilisées.

Expressions booléennes

  • Cet exemple utilise la table Product. L'expression évalue l'entrée du mois dans la colonne SellStartDate et renvoie TRUE si le mois est Juin ou un mois ultérieur.

    DATEPART("mm",SellStartDate) > 6
    
  • Cet exemple utilise la table Product. L'expression évalue le résultat arrondi de la division de la colonne ListPrice par la colonne StandardCost et renvoie TRUE si le résultat est supérieur à 1,5.

    ROUND(ListPrice / StandardCost,2) > 1.50
    
  • Cet exemple utilise la table Product. L'expression renvoie TRUE si les trois opérations produisent la valeur TRUE. Si la colonne Size et la variable BikeSize ont des types de données incompatibles, l'expression requiert une conversion explicite, comme le montre le deuxième exemple. La conversion vers le type de données DT_WSTR comprend la longueur de la chaîne.

    MakeFlag ==  TRUE && FinishedGoodsFlag == TRUE && Size != @BikeSize
    MakeFlag ==  TRUE && FinishedGoodsFlag == TRUE  && Size != (DT_WSTR,10)@BikeSize
    
  • Cet exemple utilise la table CurrencyRate. L'expression compare des valeurs de tables et de variables. Elle renvoie TRUE si les entrées des colonnes FromCurrencyCode ou ToCurrencyCode sont égales aux valeurs des variables et que la valeur de AverageRate est supérieure à celle de EndOfDayRate.

    (FromCurrencyCode == @FromCur || ToCurrencyCode == @ToCur) && AverageRate > EndOfDayRate
    
  • Cet exemple utilise la table Currency. L'expression renvoie TRUE si le premier caractère de la colonne Name n'est pas « a » ou « A ».

    SUBSTRING(UPPER(Name),1,1) != "A"
    

    L'expression suivante donne le même résultat, mais elle est plus efficace car seul un caractère est converti en majuscule.

    UPPER(SUBSTRING(Name,1,1)) != "A"
    

Expressions non booléennes

Les expressions non booléennes sont utilisées dans la transformation de colonne dérivée, les expressions de propriété et le conteneur de boucles For.

  • Cet exemple utilise la table Person. L'expression supprime les espaces de début et de fin des colonnes FirstName, MiddleName et LastName. Elle extrait la première lettre de la colonne MiddleName si elle n'est pas égale à Null, concatène l'initiale de milieu et les valeurs des colonnes FirstName et LastName et insère les espaces appropriés entre les valeurs.

    TRIM(FirstName) + " " + (!ISNULL(MiddleName) ? SUBSTRING(MiddleName,1,1) + " " : "") + TRIM(LastName)
    
  • Cet exemple utilise la table Person. L'expression valide les entrées de la colonne Title. Elle renvoie une entrée Title ou une chaîne vide.

    (Title == "Sr." || Title == "Ms." || Title == "Sra." || Title == "Mr.") ? Title : ""
    
  • Cet exemple utilise la table Product. L'expression convertit le premier caractère de la colonne Color en majuscules et les autres caractères en minuscules.

    UPPER(SUBSTRING(Color,1,1)) + LOWER(SUBSTRING(Color,2,15))
    
  • Cet exemple utilise la table Product. L'expression calcule le nombre de mois pendant lesquels un produit a été vendu et renvoie la chaîne « Unknown » si la colonne SellStartDate ou SellEndDate contient une valeur NULL.

    !(ISNULL(SellStartDate)) && !(ISNULL(SellEndDate)) ? (DT_WSTR,2)DATEDIFF("mm",SellStartDate,SellEndDate) : "Unknown"
    
  • Cet exemple utilise la table Product. L'expression calcule la marge sur la colonne StandardCost et arrondit le résultat avec une précision de deux. Le résultat est exprimé en pourcentage.

    ROUND(ListPrice / StandardCost,2) * 100
    

Ressources externes

Article technique, SSIS Expression Cheat Sheet, sur pragmaticworks.com