Question

J'utilise SSIS pour importer des données à partir de feuilles Excel dans SQL Server 2005. Ces données contiennent des colonnes avec des données qui doivent avoir la valeur de la cellule précédente non vide dans la même colonne. Voici ce qui se passe:

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

Il devrait remplir 2005 et 2006, mais tout ce que je pourrais obtenir, c’est nul. Puis-je mettre la valeur de ce champ dans une variable si elle n'est pas nulle et l'utiliser pour remplacer les valeurs nulles qui le suivent?

Était-ce utile?

La solution

Vous devrez utiliser un composant de script dans le flux de données et parcourir chaque ligne en utilisant une variable pour contenir la dernière valeur connue.

Mise à jour: Voici le code. Je l'ai fait dans VB dans SSIS 2008, vous devez donc peut-être effectuer certaines modifications (par exemple, vous devrez peut-être utiliser Dts.Variables ["quot: User :: LastYear"]. Value.ToInt32 () à la place de Variables. LastYear - Je ne me souviens plus très bien):

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

J'espère que cela aide!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top