2017-10-03 15 views
0

Je dispose d'un nom de fichier entièrement renseigné (nom de fichier avec chemin) dans la table de transfert dans le chargement SSIS. Le nom du fichier est par exemple.Comment convertir l'instruction SQL Case en langage d'expression SSIS?

C:\SSIS\scripts\work\input\tom_22082017-093346-906838.csv 
C:\SSIS\scripts\work\input\jim_22082017-093346-906838.csv 

Je voudrais extrait seul le nom du fichier à partir de cela et genereate une nouvelle colonne en utilisant une logique de cas dans la transformation de colonne dérivée SSIS. En utilisant SQL pur que je pouvais faire cela comme:

SELECT CASE 
     WHEN SUBSTRING(UPPER(RIGHT(filename, CHARINDEX('\', REVERSE(filename)) - 1)), 1, 3) = 'TOM' THEN 'TOMMY' 
     WHEN SUBSTRING(UPPER(RIGHT(filename, CHARINDEX('\', REVERSE(filename)) - 1)), 1, 3) = 'JIM' THEN 'JIMMY' 
    END AS PERSON 
    FROM mystagingtable 

Comment convertir cette logique à SSIS langue d'expression dans la transformation de colonne dérivée?

Répondre

1

Dans les expressions SSIS, vous pouvez utiliser des opérateurs ternaires imbriqués.

{Condition} ? {Return value when true} : {Return value when false} 
0

Étape 1: Utilisé DerivedColumn pour créer une nouvelle colonne qui contient le nom de 3char (tom, jim, etc.) du nom de fichier. Les fonctions SQL que vous utilisez (substring, upper, etc.) ont des fonctions équivalentes dans l'éditeur de script SSIS.

Étape 2: Utilisez un autre DerivedColumn pour générer une nouvelle colonne qui convertit la colonne ci-dessus (tom, jim etc) en nom complet (tommy, jimmy). Utilisez l'opérateur ternaire (voir la réponse Tab Alleman ci-dessous).