Exemples d'expressions Integration Services avancées
S’applique à : SQL Server SSIS Integration Runtime dans Azure Data Factory
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 les bases de données Microsoft SQL Server AdventureWorks et AdventureWorksDW2022
. Chaque exemple indique les tables utilisées.
Expressions booléennes
L’exemple suivant utilise la table Product . L’expression évalue l’entrée du mois dans la colonne SellStartDate et retourne TRUE si le mois est Juin ou un mois ultérieur.
DATEPART("mm",SellStartDate) > 6
L’exemple suivant utilise la table Product . L’expression évalue le résultat arrondi de la division de la colonne ListPrice par la colonne StandardCost et retourne TRUE si le résultat est supérieur à 1,5.
ROUND(ListPrice / StandardCost,2) > 1.50
L’exemple suivant 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
L’exemple suivant utilise la table CurrencyRate . L'expression compare des valeurs de tables et de variables. Elle retourne TRUE si les entrées des colonnes FromCurrencyCode ou ToCurrencyCode sont égales aux valeurs des variables et si la valeur de AverageRate est supérieure à celle de EndOfDayRate.
(FromCurrencyCode == @FromCur || ToCurrencyCode == @ToCur) && AverageRate > EndOfDayRate
L’exemple suivant utilise la table Currency . L’expression retourne 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.
L’exemple suivant utilise la table Contact . L’expression supprime les espaces de début et de fin des colonnes FirstName, MiddleNameet 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 LastNameet insère les espaces appropriés entre les valeurs.
TRIM(FirstName) + " " + (!ISNULL(MiddleName) ? SUBSTRING(MiddleName,1,1) + " " : "") + TRIM(LastName)
L’exemple suivant utilise la table Contact . L’expression valide les entrées de la colonne Salutation . Elle retourne une entrée Salutation ou une chaîne vide.
(Salutation == "Sr." || Salutation == "Ms." || Salutation == "Sra." || Salutation == "Mr.") ? Salutation : ""
L’exemple suivant 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))
L’exemple suivant utilise la table Product . L’expression calcule le nombre de mois pendant lesquels un produit a été vendu et retourne 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"
L’exemple suivant 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
Tâches associées
Utiliser une expression dans un composant de flux de données
Contenu associé
Article technique, SSIS Expression Cheat Sheet, sur pragmaticworks.com