Frage

ich SSIS bin mit Daten aus Excel-Tabellen in SQL Server 2005 zu importieren, enthält die Daten einige Spalten mit Daten, die den Wert des vorherigen nicht leeren Zelle in der gleichen Spalte haben sollte, sieht es wie folgt aus:

2005 | 15 | Something1
     | 12 | Something2
     | 14 | Something3
2006 | 10 | Something4
     |  2 | Something5
     | 18 | Something6
     | 15 | Something7

Es sollte fill-in 2005 und 2006, aber alles, was ich bekommen konnte ist nulls. Kann ich diesen Feldwert in einer Variablen setzen, wenn es nicht null ist, und es verwende, um die Null-Werte zu ersetzen, die nach ihm kommen?

War es hilfreich?

Lösung

Sie erhalten eine Skriptkomponente in dem Datenfluss verwenden müssen und gehen durch jede Zeile einer Variable mit dem letzten bekannten Wert zu halten.

Update: Hier ist der Code. Ich tat dies in VB in SSIS 2008, so kann es einige Bearbeitung sein Sie (zum Beispiel zu tun haben, müssen Sie Dts.Variables verwenden [ „User :: LastYear“]. Value.ToInt32 () anstelle von Variables.LastYear -I kann nicht die Spitze von meinem Kopf erinnert off):

Dim LastYear As Integer

Public Overrides Sub PreExecute()
    MyBase.PreExecute()
    LastYear = 0
End Sub

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
    If Row.year_IsNull Then
        Row.year = LastYear
    Else
        LastYear = Row.year
    End If
End Sub

Wir hoffen, das hilft!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top