2017-06-07 5 views
1

Je suis en train d'extraire un motif de la colonne 'Notes', je cherche un mot alpha-numérique (MXPC123456) à partir des notes et je veux stocker la sortie dans une nouvelle colonne. Donc pour cela, j'utilise une fonction Derived Column et FindString().Colonne dérivée SSIS (chaîne de recherche)

Je reçois l'erreur quand je lance ce code en utilisant l'expression suivante dans Drived Column dans mon paquet SSIS:

(DT_WSTR,255)SUBSTRING(TEXT_LINE1,FINDSTRING(TEXT_LINE1,"MXPC",1),10). 

Je ne sais pas ce que je fais mal.

Error: 0xC0049067 at Get DC Coms Data, Derived Column [67]: An error occurred while evaluating the function.

Error: 0xC0209029 at Get DC Coms Data, Derived Column [67]: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "component "Derived Column" (67)" failed because error code 0xC0049067 occurred, and the error row disposition on "output column "CKT_MX" (91)" specifies failure on error. An error occurred on the specified object of the specified component. There may be error messages posted before this with more information about the failure.

Error: 0xC0047022 at Get DC Coms Data, SSIS.Pipeline: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "Derived Column" (67) failed with error code 0xC0209029 while processing input "Derived Column Input" (68). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running. There may be error messages posted before this with more information about the failure.

Pourriez-vous aider s'il vous plaît?

Cordialement Prab

+1

S'il vous plaît fournir toutes les propriétés du composant en question pour que quelqu'un puisse vous aider. Par exemple ce post: https://stackoverflow.com/questions/20362998/ssis-derived-column –

+0

Vraisemblablement, la longueur de chaîne que vous vérifiez est inférieure à la chaîne trouvée + 10 caractères? – MiguelH

Répondre

1

Il y a 2 choses qui peuvent causer cette erreur:

  1. TEXT_LINE1 ne contient pas la chaîne "MXPC", donc FINDSTRING(TEXT_LINE1,"MXPC",1) retournera 0 et la fonction SUBSTRING lancera une exception
  2. TEXT_LINE1 contient "MXPC" chaîne, mais il n'y a pas 10 caractères après la FINDSTRING valeur renvoyée
  3. TEXT_LINE1 IS NULL

vous pouvez donc ajouter une validation à cette expression

ISNULL([TEXT_LINE1]) == TRUE ? "" : (FINDSTRING([TEXT_LINE1],"MXPC",1) == 0 ? "" : 
(LEN([TEXT_LINE1]) >= FINDSTRING([TEXT_LINE1],"MXPC",1) + 9 ? SUBSTRING([TEXT_LINE1],FINDSTRING([TEXT_LINE1],"MXPC",1),10) : "")) 
+1

Il peut également échouer si '[TEXT_LINE1]' est NULL, vous devez donc ajouter une validation pour cela. – Yahfoufi

+0

Merci, je vais essayer et vous faire savoir –

+0

@PrabhakerKannan j'ai édité l'expression pour vérifier si la colonne est NULL – Hadi