In einer SSIS-Datenflussaufgabe haben wir eine abgeleitete Spaltentransformation mit ungefähr 100 Spalten (im Grunde genommen werden rohe Eingabezeichenfolgen in typisierte Variablen konvertiert). Wenn diese Aufgabe fehlschlägt, gibt es eine Möglichkeit , zu Protokollierungszwecken festzustellen , welche Spalte den Fehler verursacht hat? Die einzigen anderen Alternativen, die ich mir vorstellen kann, sind eine benutzerdefinierte Skriptaufgabe, um jede Konvertierung einzeln durchzuführen (yuck) oder eine separate abgeleitete Spaltentransformation für jeden Datenpunkt (double yuck).
Grundsätzlich möchte ich nur in der Lage sein, Fehlerzeilen umzuleiten und zu wissen, warum sie fehlgeschlagen sind.
Also ein Beispiel. Unser Paket wird verwendet, um Benutzern das Hochladen in unsere Datenbank mithilfe von Excel-Tabellen zu ermöglichen. Nehmen wir also an, die eingehende Tabelle sieht folgendermaßen aus (außer es gibt Hunderte von Spalten):
+--------+-----------------+---------+------------+---------+
| Text1 | Number1 | Number2 | DateTime1 | Text2 |
+--------+-----------------+---------+------------+---------+
| Spring | 1 | 1 | 1/1/0001 | Flowers |
| Summer | 2 | 2 | 6/1/2015 | Sweaty |
| Fall | N/A | 3 | 10/31/2099 | Crunchy |
| Winter | This is garbage | 4 | 12/12/2020 | Icy |
+--------+-----------------+---------+------------+---------+
In diesem Fall möchten wir, dass Frühling, Sommer und Herbst erfolgreich sind. Fallen mit haben einen Nullwert für Number1
. Die abgeleitete Spalte enthält eine Logik, die ungefähr so aussieht (keine gültige Syntax, nur die Logik).
sanitizedNumber1 = Number1 == "N/A" ? null : cast(Number1 as int)
Winter
wird über den Fehlerpfad umgeleitet und protokolliert. Gibt es eine Möglichkeit zu wissen, welche abgeleitete Spalte fehlgeschlagen ist? Wieder haben wir ungefähr 100 Eingaben, die in dieser Transformation auf ähnliche Weise verarbeitet werden. Ich möchte in der Lage sein, etwas zu protokollieren wie:
Importdatensatz "Winter" wegen ungültiger Daten in "Nummer1" fehlgeschlagen
Es muss nicht unbedingt dieses Format sein, aber alles, was es einem Benutzer ermöglichen würde, den fehlerhaften Datenpunkt eindeutig zu identifizieren, wäre akzeptabel. Ich weiß, dass dies mit einer Skriptkomponente und manueller Durchführung der Konvertierungen möglich wäre (was wir tun müssen, wenn es keine bessere Option gibt), aber wenn es möglich ist, nur die Transformation für abgeleitete Spalten zu ändern, um etwas in diese Richtung bereitzustellen Ich würde das lieber tun, anstatt die gesamte Komponente in einem Skript neu zu implementieren.