2017-06-07 1 views
1

Ich extrahiere Muster aus der 'Notes' Spalte, ich suche ein alphanumerisches Wort (MXPC123456) aus den Notizen und ich möchte die Ausgabe in einer neuen Spalte speichern. Also verwende ich eine Derived Column und FindString() Funktion.SSIS abgeleitete Spalte (Find String)

Ich erhalte Fehler, wenn ich diesen Code ausführen in Drived Column mit dem folgenden Ausdruck in meinem SSIS Paket:

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

Sie wissen nicht, was ich falsch mache.

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.

Könnten Sie bitte helfen?

Grüße Prab

+1

Bitte geben Sie alle Eigenschaften der betreffenden Komponente so jemand Ihnen weiterhelfen können. Zum Beispiel dieser Beitrag: https://stackoverflow.com/questions/20362998/ssis-divied-column –

+0

Vermutlich ist die Zeichenfolge Länge, die Sie überprüfen, ist weniger als die gefundene Zeichenfolge + 10 Zeichen? – MiguelH

Antwort

1

Es gibt 2 Dinge, die diesen Fehler verursachen können:

  1. TEXT_LINE1 nicht "MXPC" Zeichenfolge nicht enthält, so FINDSTRING(TEXT_LINE1,"MXPC",1) wird 0 zurückkehren und die SUBSTRING Funktion eine Ausnahme
  2. werfen
  3. TEXT_LINE1 enthält "MXPC" Zeichenfolge aber es gibt keine 10 Zeichen nach FINDSTRING zurückgegebenen Wert
  4. TEXT_LINE1 IS NULL

so können Sie einige Validierung dieser Ausdruck hinzufügen

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

Es kann auch fehlschlagen, wenn '[TEXT_LINE1]' NULL ist, also müssen Sie eine Validierung dafür hinzufügen. – Yahfoufi

+0

Danke, ich werde versuchen, Sie wissen zu lassen –

+0

@ PrabhakerKannan Ich bearbeitet den Ausdruck, um zu überprüfen, ob die Spalte NULL ist – Hadi

Verwandte Themen