<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Rushabh Mehta  : Data Flow Transforms, SSIS</title><link>http://sqlblog.com/blogs/rushabh_mehta/archive/tags/Data+Flow+Transforms/SSIS/default.aspx</link><description>Tags: Data Flow Transforms, SSIS</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Custom Data Flow Components in SSIS for dealing with Delimited Strings</title><link>http://sqlblog.com/blogs/rushabh_mehta/archive/2008/04/20/creating-custom-components-in-ssis.aspx</link><pubDate>Sun, 20 Apr 2008 14:50:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:6292</guid><dc:creator>RMehta</dc:creator><slash:comments>3</slash:comments><comments>http://sqlblog.com/blogs/rushabh_mehta/comments/6292.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/rushabh_mehta/commentrss.aspx?PostID=6292</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;"&gt;&lt;FONT face=Calibri&gt;I have never been a .NET developer. Maybe that is why, despite good guidance from sqlis.com and others, I never&amp;nbsp;ventured into the world of custom components. Scripting, on the other hand, I could handle thanks to Donald's &lt;/FONT&gt;&lt;A title="Donald's book on Scripting" href="http://www.amazon.com/Rational-Guide-Extending-Script-Guides/dp/1932577254/ref=pd_bxgy_b_text_b" target=_blank&gt;&lt;SPAN style="FONT-FAMILY:'Arial','sans-serif';"&gt;book&lt;/SPAN&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; which has always provided a great reference. Well, a couple of weeks back, I finally came across a classic scenario of reuse where I could no longer avoid writing custom data flow components. So I Google’d (Live just does not make a good verb Microsoft!) away for help. Fortunately,&amp;nbsp;I did not have to go too far for help. Three excellent sources of information included &lt;/FONT&gt;&lt;A title="Custom Component decomposed" href="http://www.sqlis.com/25.aspx" target=_blank&gt;&lt;SPAN style="FONT-FAMILY:'Arial','sans-serif';"&gt;this&lt;/SPAN&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; article on sqlis.com by Allan Mitchell, the samples that you can install with SQL Server (usually found at C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Programming Samples) and finally CodePlex. On CodePlex, I found&amp;nbsp;the &lt;/FONT&gt;&lt;A title="Jamie Thomson's Normaliser Component" href="http://www.codeplex.com/NormaliserComponent" target=_blank&gt;&lt;SPAN style="FONT-FAMILY:'Arial','sans-serif';"&gt;Normaliser&amp;nbsp;Component &lt;/SPAN&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt;written by &lt;/FONT&gt;&lt;A title="Jamie's blog" href="http://blogs.conchango.com/jamiethomson/" target=_blank&gt;&lt;SPAN style="FONT-FAMILY:'Arial','sans-serif';"&gt;Jamie Thomson&lt;/SPAN&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt;. There are also a few good books written by a lot of my friends in the SSIS community - but I must confess that I don't always read technical books except on rare occasion.&amp;nbsp;:)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;"&gt;&lt;FONT face=Calibri&gt;The few references I cited above go a long way towards getting you close to your goals. Beyond that, you still need some .NET skill to better understand the code in relation to what you need to do for your unique situation. That is where Jessica&amp;nbsp;came in. Fortunately for me, she was working on this project with me and is far more proficient in .NET that I ever will be! So, thanks to her help we got the components done. What amazed me was that with the references I mentioned above, it took less than&amp;nbsp;3 days to understand and write 2 different custom components (one synchronous and one asynchronous) and achieve high degree of reusability. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;"&gt;&lt;FONT face=Calibri&gt;To give you a quick background on the custom components, both these custom components deal with de-limited strings in a column. The first component, which is a synchronous component, sorts and de-duplicates the data inside each row. So, if you have the following input...&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;LINE-HEIGHT:115%;FONT-STYLE:normal;FONT-FAMILY:'Arial','sans-serif';mso-themecolor:accent2;mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;1&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Kirk,Donald,Anjan,Ritu,Catherine,Anjan&lt;/SPAN&gt;&lt;/EM&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;LINE-HEIGHT:115%;mso-themecolor:accent2;mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;LINE-HEIGHT:115%;FONT-STYLE:normal;FONT-FAMILY:'Arial','sans-serif';mso-themecolor:accent2;mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;2&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Jamie,Allan,Simon,Erik,Andy&lt;/SPAN&gt;&lt;/EM&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;LINE-HEIGHT:115%;mso-themecolor:accent2;mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;mso-bidi-font-size:11.0pt;"&gt;&lt;FONT face=Calibri&gt;You would end up with the following output&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;LINE-HEIGHT:115%;FONT-STYLE:normal;FONT-FAMILY:'Arial','sans-serif';mso-themecolor:accent2;mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;1&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Anjan,Catherine,Donald,Kirk,Ritu&lt;/SPAN&gt;&lt;/EM&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;LINE-HEIGHT:115%;mso-themecolor:accent2;mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;LINE-HEIGHT:115%;FONT-STYLE:normal;FONT-FAMILY:'Arial','sans-serif';mso-themecolor:accent2;mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;2&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Andy,Allan,Erik,Jamie,Simon&lt;/SPAN&gt;&lt;/EM&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;LINE-HEIGHT:115%;mso-themecolor:accent2;mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;mso-bidi-font-size:11.0pt;"&gt;&lt;FONT face=Calibri&gt;The second component un-pivots a delimited string. So, in the example&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;LINE-HEIGHT:115%;FONT-STYLE:normal;FONT-FAMILY:'Arial','sans-serif';mso-themecolor:accent2;mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;1&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Anjan,Catherine,Donald,Kirk,Ritu&lt;/SPAN&gt;&lt;/EM&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;LINE-HEIGHT:115%;mso-themecolor:accent2;mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;LINE-HEIGHT:115%;FONT-STYLE:normal;FONT-FAMILY:'Arial','sans-serif';mso-themecolor:accent2;mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;2&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Andy,Allan,Erik,Jamie,Simon&lt;/SPAN&gt;&lt;/EM&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;LINE-HEIGHT:115%;mso-themecolor:accent2;mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;mso-bidi-font-size:11.0pt;"&gt;&lt;FONT face=Calibri&gt;You would see the following output&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;FONT-STYLE:normal;FONT-FAMILY:'Arial','sans-serif';mso-themecolor:accent2;mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;1&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Anjan,Catherine,Donald,Kirk,Ritu&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;1&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Anjan&lt;/SPAN&gt;&lt;/EM&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;mso-themecolor:accent2;mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;FONT-STYLE:normal;FONT-FAMILY:'Arial','sans-serif';mso-themecolor:accent2;mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;1&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Anjan,Catherine,Donald,Kirk,Ritu&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;2&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Catherine&lt;/SPAN&gt;&lt;/EM&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;mso-themecolor:accent2;mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;FONT-STYLE:normal;FONT-FAMILY:'Arial','sans-serif';mso-themecolor:accent2;mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;1&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Anjan,Catherine,Donald,Kirk,Ritu&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;3&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Donald&lt;/SPAN&gt;&lt;/EM&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;mso-themecolor:accent2;mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;FONT-STYLE:normal;FONT-FAMILY:'Arial','sans-serif';mso-themecolor:accent2;mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;1&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Anjan,Catherine,Donald,Kirk,Ritu&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;4&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Kirk&lt;/SPAN&gt;&lt;/EM&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;mso-themecolor:accent2;mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;FONT-STYLE:normal;FONT-FAMILY:'Arial','sans-serif';mso-themecolor:accent2;mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;1&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Anjan,Catherine,Donald,Kirk,Ritu&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;5&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Ritu&lt;/SPAN&gt;&lt;/EM&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;mso-themecolor:accent2;mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;FONT-STYLE:normal;FONT-FAMILY:'Arial','sans-serif';mso-themecolor:accent2;mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;2&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Andy,Allan,Erik,Jamie,Simon&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;1&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Andy&lt;/SPAN&gt;&lt;/EM&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;mso-themecolor:accent2;mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;FONT-STYLE:normal;FONT-FAMILY:'Arial','sans-serif';mso-themecolor:accent2;mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;2&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Andy,Allan,Erik,Jamie,Simon&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;2&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Allan&lt;/SPAN&gt;&lt;/EM&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;mso-themecolor:accent2;mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;FONT-STYLE:normal;FONT-FAMILY:'Arial','sans-serif';mso-themecolor:accent2;mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;2&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Andy,Allan,Erik,Jamie,Simon&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;3&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Erik&lt;/SPAN&gt;&lt;/EM&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;mso-themecolor:accent2;mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;LINE-HEIGHT:normal;"&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;FONT-STYLE:normal;FONT-FAMILY:'Arial','sans-serif';mso-themecolor:accent2;mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;2&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Andy,Allan,Erik,Jamie,Simon&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;4&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Jamie&lt;/SPAN&gt;&lt;/EM&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;mso-themecolor:accent2;mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;LINE-HEIGHT:normal;"&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;FONT-STYLE:normal;FONT-FAMILY:'Arial','sans-serif';mso-themecolor:accent2;mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;2&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Andy,Allan,Erik,Jamie,Simon&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;5&lt;SPAN style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Simon&lt;/SPAN&gt;&lt;/EM&gt;&lt;I style="mso-bidi-font-style:normal;"&gt;&lt;SPAN style="FONT-SIZE:9pt;COLOR:#c0504d;mso-themecolor:accent2;mso-bidi-font-size:11.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;mso-bidi-font-size:11.0pt;"&gt;&lt;FONT face=Calibri&gt;The un-pivot component preserves the order of the data in the string and does not do any sorting or removing of duplicate values. It also adds a numeric column to provide the position id of each value. Both of these components also accept the delimiter string as a custom variable to the component.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 0pt;"&gt;&lt;SPAN style="FONT-SIZE:10pt;LINE-HEIGHT:115%;mso-bidi-font-size:11.0pt;"&gt;&lt;FONT face=Calibri&gt;So, I am interested in hearing some feedback as to whether these components would be something you see use for? &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=6292" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/rushabh_mehta/archive/tags/Custom+Components/default.aspx">Custom Components</category><category domain="http://sqlblog.com/blogs/rushabh_mehta/archive/tags/Data+Flow+Transforms/default.aspx">Data Flow Transforms</category><category domain="http://sqlblog.com/blogs/rushabh_mehta/archive/tags/SSIS/default.aspx">SSIS</category></item></channel></rss>