Quantcast
Channel: SQL Server Integration Services forum
Viewing all articles
Browse latest Browse all 24688

How to get a concurrent row ID when parsing multi file / multi-line through a for each loop container

$
0
0

Hi all

I have an SSIS solution which currently analyses a given number of files in a directory, reads the lines out of those files, does some transformation, then produces a single CSV collation / transformation of the data (in a For Each Loop Container).

The dilemma I'm facing currently is concerning row numbers on the output file. I've used a script component which does output a sequence number, but what I'm not sure on is how I stop the sequence from resetting to 1 once the next file in the input sequence is processed.

I guess I need to pass a count back from the Data Flow - Script Component to the Control Flow somehow?

Any help is much appreciated. Please see the code in the Script Component below...

#region

Help:  Introduction to the Script Component


/* The Script Component allows you to perform virtually any operation that can be accomplished in

* a .Net application within the context of an Integration Services data flow.

*

* Expand the other regions which have "Help" prefixes for examples of specific ways to use

* Integration Services features within this script component. */


#endregion



#region

Namespaces


using

System;


using

System.Data;


using

Microsoft.SqlServer.Dts.Pipeline.Wrapper;


using

Microsoft.SqlServer.Dts.Runtime.Wrapper;


#endregion



///

<summary>

///

This is the class to which to add your code.  Do not change the name, attributes, or parent


///

of this class.


///

</summary>


[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]


public

classScriptMain: UserComponent

{

   

#regionHelp:  Using Integration Services variables and parameters

   

/* To use a variable in this script, first ensure that the variable has been added to

     * either the list contained in the ReadOnlyVariables property or the list contained in

     * the ReadWriteVariables property of this script component, according to whether or not your

     * code needs to write into the variable.  To do so, save this script, close this instance of

     * Visual Studio, and update the ReadOnlyVariables and ReadWriteVariables properties in the

     * Script Transformation Editor window.

     * To use a parameter in this script, follow the same steps. Parameters are always read-only.

     *

     * Example of reading from a variable or parameter:

     *  DateTime startTime = Variables.MyStartTime;

     *

     * Example of writing to a variable:

     *  Variables.myStringVariable = "new value";

     */


   

#endregion


   

#regionHelp:  Using Integration Services Connnection Managers

   

/* Some types of connection managers can be used in this script component.  See the help topic

     * "Working with Connection Managers Programatically" for details.

     *

     * To use a connection manager in this script, first ensure that the connection manager has

* been added to either the list of connection managers on the Connection Managers page of the

     * script component editor.  To add the connection manager, save this script, close this instance of

     * Visual Studio, and add the Connection Manager to the list.

     *

     * If the component needs to hold a connection open while processing rows, override the

     * AcquireConnections and ReleaseConnections methods.

     *

     * Example of using an ADO.Net connection manager to acquire a SqlConnection:

     *  object rawConnection = Connections.SalesDB.AcquireConnection(transaction);

     *  SqlConnection salesDBConn = (SqlConnection)rawConnection;

     *

     * Example of using a File connection manager to acquire a file path:

     *  object rawConnection = Connections.Prices_zip.AcquireConnection(transaction);

     *  string filePath = (string)rawConnection;

     *

     * Example of releasing a connection manager:

     *  Connections.SalesDB.ReleaseConnection(rawConnection);

     */


   

#endregion


   

#regionHelp:  Firing Integration Services Events

   

/* This script component can fire events.

     *

     * Example of firing an error event:

     *  ComponentMetaData.FireError(10, "Process Values", "Bad value", "", 0, out cancel);

     *

     * Example of firing an information event:

     *  ComponentMetaData.FireInformation(10, "Process Values", "Processing has started", "", 0, fireAgain);

     *

     * Example of firing a warning event:

     *  ComponentMetaData.FireWarning(10, "Process Values", "No rows were received", "", 0);

     */


   

#endregion


   

///<summary>


   

///This method is called once, before rows begin to be processed in the data flow.


   

///


   

///You can remove this method if you don't need to do anything here.


   

///</summary>


   

///


   

introwCount;

   

   

publicoverridevoidPreExecute()

    {

       

base.PreExecute();

       

/*

         * Add your code here

         */


      

// rowCount = 0;


    }

   

///<summary>


   

///This method is called after all the rows have passed through this component.


   

///


   

///You can delete this method if you don't need to do anything here.


   

///</summary>


   

publicoverridevoidPostExecute()

    {

       

base.PostExecute();

       

/*

         * Add your code here

         */


    }

   

///<summary>


   

///This method is called once for every row that passes through the component from Input0.


   

///


   

///Example of reading a value from a column in the the row:


   

///  string zipCode = Row.ZipCode


   

///


   

///Example of writing a value to a column in the row:


   

///  Row.ZipCode = zipCode


   

///</summary>


   

///<param name="Row">The row that is currently passing through the component</param>


   

publicoverridevoidInput0_ProcessInputRow(Input0Buffer Row)

    {

        rowCount++;

        Row.RowCount = rowCount;            

   

    }

}


Viewing all articles
Browse latest Browse all 24688

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>