<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.2" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: An SSIS Custom Transformation Success Story</title>
	<link>http://blog.todmeansfox.com/2008/04/09/an-ssis-custom-transformation-success-story/</link>
	<description>Business Intelligence, Data Warehousing, SQL, Visual FoxPro.</description>
	<pubDate>Tue, 06 Jan 2009 10:00:30 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2</generator>

	<item>
		<title>By: Tod means Fox &#124; ID Lookup Custom Transform (Part 1 of 3)</title>
		<link>http://blog.todmeansfox.com/2008/04/09/an-ssis-custom-transformation-success-story/#comment-1382</link>
		<author>Tod means Fox &#124; ID Lookup Custom Transform (Part 1 of 3)</author>
		<pubDate>Thu, 17 Apr 2008 15:26:50 +0000</pubDate>
		<guid>http://blog.todmeansfox.com/2008/04/09/an-ssis-custom-transformation-success-story/#comment-1382</guid>
		<description>[...] As promised, I&#8217;ll discuss in this post some of the details of my custom transform component I wrote in C# for SSIS. Unfortunately, I cannot publish the task because it contains business logic and company secrets! I will, however, talk about how I went about it and detail some of its finer and not-so-finer points. [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] As promised, I&#8217;ll discuss in this post some of the details of my custom transform component I wrote in C# for SSIS. Unfortunately, I cannot publish the task because it contains business logic and company secrets! I will, however, talk about how I went about it and detail some of its finer and not-so-finer points. [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tod McKenna</title>
		<link>http://blog.todmeansfox.com/2008/04/09/an-ssis-custom-transformation-success-story/#comment-1376</link>
		<author>Tod McKenna</author>
		<pubDate>Wed, 16 Apr 2008 13:11:53 +0000</pubDate>
		<guid>http://blog.todmeansfox.com/2008/04/09/an-ssis-custom-transformation-success-story/#comment-1376</guid>
		<description>Excellent point Yves! The custom component sits in a black box, which makes it next-to-impossible for a test manager to pick apart. The control flows and data flows gave him and others on the team an opportunity to review each step along the way. 

But just to be clear: The mess refers to a lack functional documentation, little to no experience of the team (basically, everyone but you) on data warehousing/data integration, and therefore no focus on implementing best-practices in the initial design. Sadly, this is indicative of many projects. On top of that, we've been stuck in the mud with the release (still).

The consequence of missing or limited data profiling (we had some pretty good talks about the data profiling issue in particular), no functional requirements, and a more-or-less ad hoc approach to managing the development processes is that oftentimes what works isn't very optimized, easy to debug, or easy to repeat (which is the task I have in front of me). 

I had the benefit of stepping in after all this, and saw several patterns in the data flow that I've been able to shake out and turn into some optimized C#. The code is rather simple -- although I won't post the actual implementation, I'll be posting most of the foundation. Actually, it would have been great for you to still be here for this. I could have used your knowledge and expertise.

So my decision to go ahead with this was based on the following: ease of future maintenance, ease of future development, and performance improvements. I’ve achieved that at the expense of making it more difficult for business users to poke in and see. To compensate, the documentation for the new component will be kept up to date and easy to follow.</description>
		<content:encoded><![CDATA[<p>Excellent point Yves! The custom component sits in a black box, which makes it next-to-impossible for a test manager to pick apart. The control flows and data flows gave him and others on the team an opportunity to review each step along the way. </p>
<p>But just to be clear: The mess refers to a lack functional documentation, little to no experience of the team (basically, everyone but you) on data warehousing/data integration, and therefore no focus on implementing best-practices in the initial design. Sadly, this is indicative of many projects. On top of that, we&#8217;ve been stuck in the mud with the release (still).</p>
<p>The consequence of missing or limited data profiling (we had some pretty good talks about the data profiling issue in particular), no functional requirements, and a more-or-less ad hoc approach to managing the development processes is that oftentimes what works isn&#8217;t very optimized, easy to debug, or easy to repeat (which is the task I have in front of me). </p>
<p>I had the benefit of stepping in after all this, and saw several patterns in the data flow that I&#8217;ve been able to shake out and turn into some optimized C#. The code is rather simple &#8212; although I won&#8217;t post the actual implementation, I&#8217;ll be posting most of the foundation. Actually, it would have been great for you to still be here for this. I could have used your knowledge and expertise.</p>
<p>So my decision to go ahead with this was based on the following: ease of future maintenance, ease of future development, and performance improvements. I’ve achieved that at the expense of making it more difficult for business users to poke in and see. To compensate, the documentation for the new component will be kept up to date and easy to follow.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Yves Mulkers</title>
		<link>http://blog.todmeansfox.com/2008/04/09/an-ssis-custom-transformation-success-story/#comment-1375</link>
		<author>Yves Mulkers</author>
		<pubDate>Wed, 16 Apr 2008 08:24:33 +0000</pubDate>
		<guid>http://blog.todmeansfox.com/2008/04/09/an-ssis-custom-transformation-success-story/#comment-1375</guid>
		<description>Nice to see you improved the processing. 
Sad to hear that things are "a bit of a mess".

Quiet curious on how you wrote the custom transformation, with all the lookups needed to find the various keys based on the different combinations.

Aim was to clearly show the business logic/flow in the package.
OK it looks messy, but at least the test manager was able to scan through the matching process and understand which matching types were needed.
When you put all of this in a custom transformation you make it more complex for a non programmer to understand what is happening in the ETL flow.  
I think you have to consider what is easiest, scan through 2 X 100 lines of code or the flow picture.... (as you know a pictures says more than a thousand words).
But you have a point in doing it like that, if you improved performance by 600%.
Anyway, Tod it was nice working with you on the project.... 
see you.</description>
		<content:encoded><![CDATA[<p>Nice to see you improved the processing.<br />
Sad to hear that things are &#8220;a bit of a mess&#8221;.</p>
<p>Quiet curious on how you wrote the custom transformation, with all the lookups needed to find the various keys based on the different combinations.</p>
<p>Aim was to clearly show the business logic/flow in the package.<br />
OK it looks messy, but at least the test manager was able to scan through the matching process and understand which matching types were needed.<br />
When you put all of this in a custom transformation you make it more complex for a non programmer to understand what is happening in the ETL flow.<br />
I think you have to consider what is easiest, scan through 2 X 100 lines of code or the flow picture&#8230;. (as you know a pictures says more than a thousand words).<br />
But you have a point in doing it like that, if you improved performance by 600%.<br />
Anyway, Tod it was nice working with you on the project&#8230;.<br />
see you.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tod McKenna</title>
		<link>http://blog.todmeansfox.com/2008/04/09/an-ssis-custom-transformation-success-story/#comment-1352</link>
		<author>Tod McKenna</author>
		<pubDate>Tue, 08 Apr 2008 18:14:17 +0000</pubDate>
		<guid>http://blog.todmeansfox.com/2008/04/09/an-ssis-custom-transformation-success-story/#comment-1352</guid>
		<description>LOL

Ok, ok. So I wrote a custom transformation "component"! Now that I've re-read my post, calling it a "task" now gets under my skin a bit. I may just have to edit it....</description>
		<content:encoded><![CDATA[<p>LOL</p>
<p>Ok, ok. So I wrote a custom transformation &#8220;component&#8221;! Now that I&#8217;ve re-read my post, calling it a &#8220;task&#8221; now gets under my skin a bit. I may just have to edit it&#8230;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Darren</title>
		<link>http://blog.todmeansfox.com/2008/04/09/an-ssis-custom-transformation-success-story/#comment-1350</link>
		<author>Darren</author>
		<pubDate>Tue, 08 Apr 2008 16:34:01 +0000</pubDate>
		<guid>http://blog.todmeansfox.com/2008/04/09/an-ssis-custom-transformation-success-story/#comment-1350</guid>
		<description>Looks like you've done a good job for yourself, and discovered a much undervalued SSIS capability, one of my favourites in fact. I do wish however you would not call it a Task. 

Tasks are elements found in Control Flow, but you have written a Data Flow “component”, specifically a transformation.

Writing custom tasks is even easier than components so write those too!</description>
		<content:encoded><![CDATA[<p>Looks like you&#8217;ve done a good job for yourself, and discovered a much undervalued SSIS capability, one of my favourites in fact. I do wish however you would not call it a Task. </p>
<p>Tasks are elements found in Control Flow, but you have written a Data Flow “component”, specifically a transformation.</p>
<p>Writing custom tasks is even easier than components so write those too!</p>
]]></content:encoded>
	</item>
</channel>
</rss>
