Domanda

Sto usando SSIS per importare dati da fogli Excel in SQL Server 2005, i dati contengono alcune colonne con dati che dovrebbero avere il valore della precedente cella non vuota nella stessa colonna, è simile al seguente:

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

Dovrebbe compilare il 2005 e il 2006, ma tutto ciò che ho potuto ottenere è null. Posso inserire il valore di questo campo in una variabile se non è null e usarlo per sostituire i valori null che lo seguono?

È stato utile?

Soluzione

Dovrai utilizzare un componente script nel flusso di dati e passare attraverso ogni riga, usando una variabile per contenere l'ultimo valore noto.

Aggiornamento: ecco il codice. L'ho fatto in VB in SSIS 2008, quindi potrebbe esserci qualche modifica che devi fare (ad esempio, potresti dover usare Dts.Variables [" User :: LastYear "]. Value.ToInt32 () invece di Variabili. LastYear - Non ricordo la parte superiore della mia testa):

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

Speriamo che questo aiuti!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top