<?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>Inequality joins, Asynchronous transformations and Lookups : SSIS</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2010/05/14/inequality-joins-asynchronous-transformations-and-lookups-ssis.aspx</link><description>It is pretty much accepted by SQL Server Integration Services (SSIS) developers that synchronous transformations are generally quicker than asynchronous transformations (for a description of synchronous and asynchronous transformations go read Asynchronous</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>re: Inequality joins, Asynchronous transformations and Lookups : SSIS</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2010/05/14/inequality-joins-asynchronous-transformations-and-lookups-ssis.aspx#25180</link><pubDate>Fri, 14 May 2010 22:51:21 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:25180</guid><dc:creator>Matt Masson</dc:creator><description>&lt;p&gt;You do need to be careful about relative dataset sizes when considering using this approach. If you have a very large reference table (your OLE_SRC), and not many change rows (SCR_SRC), you'll end up spending a lot of time waiting for the OLE_SRC to finish reading, even though there are no more matches coming in from SCR_SRC. &lt;/p&gt;
</description></item><item><title>re: Inequality joins, Asynchronous transformations and Lookups : SSIS</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2010/05/14/inequality-joins-asynchronous-transformations-and-lookups-ssis.aspx#25184</link><pubDate>Sat, 15 May 2010 07:16:47 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:25184</guid><dc:creator>jamiet</dc:creator><description>&lt;p&gt;Matt,&lt;/p&gt;
&lt;p&gt;Yes indeed. Others' mileage may vary; as always you must test and measure to see what works best for you.&lt;/p&gt;
&lt;p&gt;-Jamie&lt;/p&gt;
</description></item><item><title>re: Inequality joins, Asynchronous transformations and Lookups : SSIS</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2010/05/14/inequality-joins-asynchronous-transformations-and-lookups-ssis.aspx#25189</link><pubDate>Sat, 15 May 2010 16:22:51 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:25189</guid><dc:creator>Marco Russo (SQLBI)</dc:creator><description>&lt;p&gt;Matt, I agree with you but Jamie is right - each data warehouse (and each dimension) has specific characteristics that doesn't change so much over time - thus, I think that there are many scenarios where Jamie's approach does worth the effort (and the risk, which is calculated if you know what if you're doing!)&lt;/p&gt;
&lt;p&gt;Great idea, Jamie!&lt;/p&gt;
&lt;p&gt;Marco&lt;/p&gt;
</description></item><item><title>re: Inequality joins, Asynchronous transformations and Lookups : SSIS</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2010/05/14/inequality-joins-asynchronous-transformations-and-lookups-ssis.aspx#25190</link><pubDate>Sat, 15 May 2010 17:00:10 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:25190</guid><dc:creator>AlbertoFerrari</dc:creator><description>&lt;p&gt;Jamie,&lt;/p&gt;
&lt;p&gt;The major drawback of this approach is, IMHO, the fact that the inputs of the merge need to be sorted. If one of the input is the fact table and you have, for example, three SCD lookups, then you will end un paying three in-memory blocking sorts of the fact table, something that is seldom acceptable.&lt;/p&gt;
&lt;p&gt;When I face these situations, I normally end up with a script component that caches the full SCD, in a dictionary where the key is the customer code and each element contains the sorted list of &amp;lt;date, id&amp;gt;. It runs at a speed very close to the normal equi-join non blocking lookup, even if it needs some coding, of course.&lt;/p&gt;
&lt;p&gt;I wish MS will sometime create an SCD lookup... and I think I'm not the only one (Matt... got the point? :))&lt;/p&gt;
</description></item><item><title>re: Inequality joins, Asynchronous transformations and Lookups : SSIS</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2010/05/14/inequality-joins-asynchronous-transformations-and-lookups-ssis.aspx#25205</link><pubDate>Mon, 17 May 2010 04:47:22 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:25205</guid><dc:creator>Nitin</dc:creator><description>&lt;p&gt;I've incorporated this suggestion in our test env and it works like a charm.&lt;/p&gt;
&lt;p&gt;Thanks for the Tip Jamie.&lt;/p&gt;
&lt;p&gt;@nitinsalgar&lt;/p&gt;
</description></item><item><title>re: Inequality joins, Asynchronous transformations and Lookups : SSIS</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2010/05/14/inequality-joins-asynchronous-transformations-and-lookups-ssis.aspx#25288</link><pubDate>Wed, 19 May 2010 13:40:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:25288</guid><dc:creator>JoshuaDD</dc:creator><description>&lt;p&gt;Hi Jamie,&lt;/p&gt;
&lt;p&gt;On an unrelated topic, I left you a question in this forum thread.&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/53e3f59d-9442-43f9-99c5-37dd964408fc"&gt;http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/53e3f59d-9442-43f9-99c5-37dd964408fc&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It's on an example you posted a couple years ago so I'm sorry if this isn't fresh in your mind. &amp;nbsp;Thanks in advance for any help you can give.&lt;/p&gt;
&lt;p&gt;Josh&lt;/p&gt;
</description></item><item><title>re: Inequality joins, Asynchronous transformations and Lookups : SSIS</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2010/05/14/inequality-joins-asynchronous-transformations-and-lookups-ssis.aspx#27397</link><pubDate>Thu, 29 Jul 2010 12:49:45 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:27397</guid><dc:creator>François JEHL</dc:creator><description>&lt;p&gt;Really great post Jamie. Even if I agree with Matt on the potential risks, it's the best solution I know to handle theta-joins. Even if a specific SCD lookup would be great, I think a Lookup with the ability to write the comparison expression (an IComparer thing I dunno) without losing the cache functionnality would be even better. Anyway thanks for this one.&lt;/p&gt;
</description></item><item><title>Don’t turn the dataflow into a cursor [SSIS]</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2010/05/14/inequality-joins-asynchronous-transformations-and-lookups-ssis.aspx#28478</link><pubDate>Tue, 31 Aug 2010 21:22:57 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:28478</guid><dc:creator>SSIS Junkie</dc:creator><description>&lt;p&gt;I saw a thread on the SSIS forum today that went something like this: I have the following dataset: AccountNo&lt;/p&gt;
</description></item><item><title>re: Inequality joins, Asynchronous transformations and Lookups : SSIS</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2010/05/14/inequality-joins-asynchronous-transformations-and-lookups-ssis.aspx#31202</link><pubDate>Wed, 01 Dec 2010 04:06:34 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:31202</guid><dc:creator>MartinIsti</dc:creator><description>&lt;p&gt;What I haven't been able to figure out how to produce the same in SSIS like the following simple T-SQL JOIN statement:&lt;/p&gt;
&lt;p&gt;SELECT ...&lt;/p&gt;
&lt;p&gt;FROM same_table t1 JOIN same_table t2 &lt;/p&gt;
&lt;p&gt;ON &amp;nbsp;t1.column1 = &amp;nbsp;t2.column1&lt;/p&gt;
&lt;p&gt;AND t1.column2 &amp;gt;= t2.column2&lt;/p&gt;
&lt;p&gt;The tables are the same (it's a self join) and e.g. consists of 3 rows. The end result can be more than 3 rows.&lt;/p&gt;
&lt;p&gt;My problem is the following:&lt;/p&gt;
&lt;p&gt;- I've tried the Lookup task's advanced tab's custom query feature to create inequal JOINs and that's working fine apart from the thing that a Lookup returns with a maximum of 1 row (per match)&lt;/p&gt;
&lt;p&gt;- I've tried using the MERGE JOIN but it does NOT allow inequal JOINing conditions.&lt;/p&gt;
&lt;p&gt;I think it would be a quite basic requirement against SSIS that it can provide a feature that covers this type of T-SQL JOINing. I hope there is and it's just me who hasn't found it (out) yet. If not... well it should provide a solution for this I think.&lt;/p&gt;
&lt;p&gt;If anyone has an idea or just knows that it's already been discussed and solved please let me know, I've been desperately seeking the answer in the last 7 days.&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;
</description></item><item><title>re: Inequality joins, Asynchronous transformations and Lookups : SSIS</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2010/05/14/inequality-joins-asynchronous-transformations-and-lookups-ssis.aspx#31209</link><pubDate>Wed, 01 Dec 2010 08:34:36 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:31209</guid><dc:creator>jamiet</dc:creator><description>&lt;p&gt;MartinIsti,&lt;/p&gt;
&lt;p&gt;Use the same technique that I used in this blog post. Put the &amp;quot;greater than or equal to&amp;quot; condition into a Conditional Split immediately after the Merge Join.&lt;/p&gt;
&lt;p&gt;Regards&lt;/p&gt;
&lt;p&gt;Jamie&lt;/p&gt;
</description></item><item><title>re: Inequality joins, Asynchronous transformations and Lookups : SSIS</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2010/05/14/inequality-joins-asynchronous-transformations-and-lookups-ssis.aspx#31377</link><pubDate>Mon, 06 Dec 2010 01:50:07 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:31377</guid><dc:creator>MartinIsti</dc:creator><description>&lt;p&gt;Thanks Jamie, in the end I managed to solve the issue by modifying sg in the source query (but I purely used SSIS tricks :))&lt;/p&gt;
&lt;p&gt;I'd like to have another question (not totally related to here but it's also about JOINs and LOOKUPs and I haven't found useful info on the net about it - or might have used the wrong keywords in the search engine):&lt;/p&gt;
&lt;p&gt;I have a fact table with 4 date columns. For each of those I would like to get the surrogate key and putting only those into the final fact table. Is there a way of doing it without 4 lookups (since the same table is used it would negatively affect performance, I presume?) /apart from doing it with T-SQL JOINs in the source task/?&lt;/p&gt;
&lt;p&gt;It just does not feel elegant and efficient to use that many lookups. What's your opinion?&lt;/p&gt;
&lt;p&gt;Thanks for every idea!&lt;/p&gt;
</description></item><item><title>re: Inequality joins, Asynchronous transformations and Lookups : SSIS</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2010/05/14/inequality-joins-asynchronous-transformations-and-lookups-ssis.aspx#31383</link><pubDate>Mon, 06 Dec 2010 13:59:12 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:31383</guid><dc:creator>jamiet</dc:creator><description>&lt;p&gt;Martin,&lt;/p&gt;
&lt;p&gt;Unfortunately its pretty much unavoidable - if you want to use the Lookup component then you will need four of them. However, if the lookup set is the same for each one then you could alleviate some of the impact on your lookup source by using a Cache Connection (&lt;a rel="nofollow" target="_new" href="http://consultingblogs.emc.com/jamiethomson/archive/2007/11/16/Katmai_3A00_-SSIS_3A00_-Lookup-component-gets-a-makeover.aspx"&gt;http://consultingblogs.emc.com/jamiethomson/archive/2007/11/16/Katmai_3A00_-SSIS_3A00_-Lookup-component-gets-a-makeover.aspx&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;-Jamie&lt;/p&gt;
</description></item><item><title>re: Inequality joins, Asynchronous transformations and Lookups : SSIS</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2010/05/14/inequality-joins-asynchronous-transformations-and-lookups-ssis.aspx#31393</link><pubDate>Mon, 06 Dec 2010 21:16:49 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:31393</guid><dc:creator>MartinIsti</dc:creator><description>&lt;p&gt;Thanks for the tip Jamie. Though this time I handled it in the source SQL query. I think it's not really elegant (not to mention the effectiveness) to use that many lookups, but it seems we have to live with it.&lt;/p&gt;
</description></item><item><title>re: Inequality joins, Asynchronous transformations and Lookups : SSIS</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2010/05/14/inequality-joins-asynchronous-transformations-and-lookups-ssis.aspx#31599</link><pubDate>Tue, 14 Dec 2010 04:14:01 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:31599</guid><dc:creator>Debo</dc:creator><description>&lt;p&gt;Hi Jamie,&lt;/p&gt;
&lt;p&gt;I appreciate the way you done the video.I am new to ssis and it is quite useful to see the experts.&lt;/p&gt;
&lt;p&gt;Please post few more videos on different topics.That will be helpful .&lt;/p&gt;
</description></item><item><title>Investigation: Can different combinations of components effect Dataflow performance?</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2010/05/14/inequality-joins-asynchronous-transformations-and-lookups-ssis.aspx#32584</link><pubDate>Thu, 13 Jan 2011 10:04:34 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:32584</guid><dc:creator>SSIS Junkie</dc:creator><description>&lt;p&gt;Introduction The Dataflow task is one of the core components (if not the core component) of SQL Server&lt;/p&gt;
</description></item></channel></rss>