Search

onze sponsors

microsoft_logo.gif


 

computrain_logo.JPG

Forum Login | Register
   Forum

 

Subject: SSIS -> bijwerken package variable in een Script task
Prev Next
You are not authorized to post a reply.

Author Messages
Joep MulderUser is Offline

Posts:6

03-10-2007 10:47:44 Alert 

Het volgende probleem doet zicht voor:

Ik heb een package variable 'vMutationDate' van het type DateTime. In mijn Data flow worden rijen verwerkt waarin een veld MutationDate wordt verwerkt. Deze zou ik graag rij voor rij in de package variable willen bijwerken zodat ik deze kan gebruiken in mijn Slowly Changing Dimension.

Ik heb geprobeerd dit op te lossen met een Script Component maar ik krijg het niet voor elkaar om de package variable bij te werken. Ik heb de mijn package variable ingevuld bij 'ReadWriteVariables' en het volgende scipt gebruikt:


Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)

Dim vMutationDate As DateTime

vMutationDate = Row.MutationDate

End Sub


Wat is nu de juiste manier om dit te doen?
Rob KoolUser is Offline

Posts:11

21-12-2007 12:14:00 Alert 
De package variabel is beschikbaar via de Variables collectie in een Script component:

Me.Variables.dtMutDate

Je kunt hier echter pas in het PostExecute waarden aan toekennen (zie ook: http://msdn2.microsoft.com/en-us/library/aa337079.aspx)

Wat je zou kunnen doen is een "Derived Column" transform gebruiken om zo een extra kolom aan je dataflow toe te voegen. Deze is dan per row beschikbaar.


In een ScriptTask  (dit is beschikbaar in de Control flow) zijn package variabele beschikbaar via de Variables Collectie van het DTS object. Hieraan kun je als volgt refereren:

Dts.Variables("CurrentFileName").Value


Wil je echter variabele gebruiken om data tussen meerdere rows vast te houden, dan kun je die in het ScriptComponent direct in de Class ScriptMain declareren:

Public Class ScriptMain
    Inherits UserComponent

    Dim intCurrentRowKey As Int = 0

    Public Overrides Sub Input0_ProcessInputRow(ByVal Buffer As Input0Buffer)
        If intCurrentRowKey <> row.mykey Then
              'Do something
              intCurrentRowKey = row.mykey
        Else
              'Do something else
        End If
    End Sub


In dit voorbeeld wordt de waarde van de variable over de rows heen vastgehouden omdat de declaratie buiten de ProcessInputRow sub ligt.

Tot slot zou je de waarde nog aan een Package variabele kunnen toekennen (Dan moet je ook de ProcesInput sub opnemen in je script)
You are not authorized to post a reply.
Forums > Forums > Business Intelligence > SSIS -> bijwerken package variable in een Script task



ActiveForums 3.6
  
Copyright (c) 2012 PASS Nederland   Privacy Statement  Terms Of Use