Pregunta

Estoy usando SSIS para importar datos de hojas de Excel a SQL Server 2005, los datos contienen algunas columnas con datos que deberían tener el valor de la celda anterior no vacía en la misma columna, se parece a esto:

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

Debería completar 2005 y 2006, pero todo lo que pude obtener es nulos. ¿Puedo poner el valor de este campo en una variable si no es nulo, y usarlo para reemplazar los valores nulos que vienen después?

¿Fue útil?

Solución

Tendrás que usar un componente de script en el flujo de datos y pasar por cada fila, usando una variable para mantener el último valor conocido.

Actualización: Aquí está el código. Hice esto en VB en SSIS 2008, por lo que es posible que debas realizar alguna edición (por ejemplo, es posible que tengas que usar Dts.Variables [" User :: LastYear "]. Value.ToInt32 () en lugar de Variables. Último año: no puedo recordar la parte superior de mi cabeza):

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

Esperemos que esto ayude!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top