<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Left outer join using HASH - only rows from the left table in New SAS User</title>
    <link>https://communities.sas.com/t5/New-SAS-User/Left-outer-join-using-HASH-only-rows-from-the-left-table/m-p/649111#M22246</link>
    <description>&lt;P&gt;Also, how huge is 'huge'? And what about the size of TableB?&lt;/P&gt;</description>
    <pubDate>Wed, 20 May 2020 07:06:07 GMT</pubDate>
    <dc:creator>PeterClemmensen</dc:creator>
    <dc:date>2020-05-20T07:06:07Z</dc:date>
    <item>
      <title>Left outer join using HASH - only rows from the left table</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Left-outer-join-using-HASH-only-rows-from-the-left-table/m-p/649103#M22243</link>
      <description>&lt;P&gt;Dear all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I was trying to execute a proc sql left join in order to display only the rows from the left table that do not match with the right table (conceptually:&amp;nbsp; select * from TableA A Left Join TableB B on A.key=B.Key where B.key Is Null). The problem is my table A is huge, and I am using a key with 4 columns, and as such the proc sql takes a lot of time. If possible, I would like to get the same results using HASH since I understood it can have a very good performance for this kind of things. Any help appreciated.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Example with TableA and TableB (key Col1, Col2, Col3, Col4):&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P class="lia-align-center"&gt;&lt;STRONG&gt;TableA&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Col1&lt;/TD&gt;&lt;TD&gt;Col2&lt;/TD&gt;&lt;TD&gt;Col3&lt;/TD&gt;&lt;TD&gt;Col4&lt;/TD&gt;&lt;TD&gt;Col5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;D&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;TableB&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Col1&lt;/TD&gt;&lt;TD&gt;Col2&lt;/TD&gt;&lt;TD&gt;Col3&lt;/TD&gt;&lt;TD&gt;Col4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;D&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Desired result&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Col1&lt;/TD&gt;&lt;TD&gt;Col2&lt;/TD&gt;&lt;TD&gt;Col3&lt;/TD&gt;&lt;TD&gt;Col4&lt;/TD&gt;&lt;TD&gt;Col5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 20 May 2020 06:55:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Left-outer-join-using-HASH-only-rows-from-the-left-table/m-p/649103#M22243</guid>
      <dc:creator>Matos</dc:creator>
      <dc:date>2020-05-20T06:55:25Z</dc:date>
    </item>
    <item>
      <title>Re: Left outer join using HASH - only rows from the left table</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Left-outer-join-using-HASH-only-rows-from-the-left-table/m-p/649108#M22245</link>
      <description>&lt;P&gt;Try this&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data TableA;
input Col1 $ Col2 Col3 Col4 Col5;
datalines;
A 1 6 1 2
A 2 4 1 2
B 1 5 1 2
A 2 4 1 2
C 1 5 1 2
A 1 5 1 2
D 6 1 1 2
;

data TableB;
input Col1 $ Col2 Col3 Col4;
datalines;
A 1 5 1
B 1 5 1
D 6 1 1
E 7 1 1
;

data want;
    if _N_ = 1 then do;
        declare hash h (dataset : "TableB");
        h.definekey ("Col1", "Col2", "Col3", "Col4");
        h.definedone ();
    end;

    set TableA;

    if h.check() ne 0;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 20 May 2020 07:02:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Left-outer-join-using-HASH-only-rows-from-the-left-table/m-p/649108#M22245</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-05-20T07:02:52Z</dc:date>
    </item>
    <item>
      <title>Re: Left outer join using HASH - only rows from the left table</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Left-outer-join-using-HASH-only-rows-from-the-left-table/m-p/649111#M22246</link>
      <description>&lt;P&gt;Also, how huge is 'huge'? And what about the size of TableB?&lt;/P&gt;</description>
      <pubDate>Wed, 20 May 2020 07:06:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Left-outer-join-using-HASH-only-rows-from-the-left-table/m-p/649111#M22246</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-05-20T07:06:07Z</dc:date>
    </item>
    <item>
      <title>Re: Left outer join using HASH - only rows from the left table</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Left-outer-join-using-HASH-only-rows-from-the-left-table/m-p/649113#M22247</link>
      <description>&lt;P&gt;Table A has around 4 million records and table B around 2 million records. I wanted to exclude B from A if B exists in A.&lt;/P&gt;</description>
      <pubDate>Wed, 20 May 2020 07:15:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Left-outer-join-using-HASH-only-rows-from-the-left-table/m-p/649113#M22247</guid>
      <dc:creator>Matos</dc:creator>
      <dc:date>2020-05-20T07:15:20Z</dc:date>
    </item>
    <item>
      <title>Re: Left outer join using HASH - only rows from the left table</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Left-outer-join-using-HASH-only-rows-from-the-left-table/m-p/649114#M22248</link>
      <description>&lt;P&gt;Did you try my code?&lt;/P&gt;</description>
      <pubDate>Wed, 20 May 2020 07:19:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Left-outer-join-using-HASH-only-rows-from-the-left-table/m-p/649114#M22248</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-05-20T07:19:22Z</dc:date>
    </item>
    <item>
      <title>Re: Left outer join using HASH - only rows from the left table</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Left-outer-join-using-HASH-only-rows-from-the-left-table/m-p/649115#M22249</link>
      <description>&lt;P&gt;Apparently it works and seems incredible fast. Thanks a lot.&lt;/P&gt;</description>
      <pubDate>Wed, 20 May 2020 07:20:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Left-outer-join-using-HASH-only-rows-from-the-left-table/m-p/649115#M22249</guid>
      <dc:creator>Matos</dc:creator>
      <dc:date>2020-05-20T07:20:10Z</dc:date>
    </item>
    <item>
      <title>Re: Left outer join using HASH - only rows from the left table</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Left-outer-join-using-HASH-only-rows-from-the-left-table/m-p/649116#M22250</link>
      <description>&lt;P&gt;Anytime. If your sample data is representative, then you can simplify a bit by&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
    if _N_ = 1 then do;
        declare hash h (dataset : "TableB");
        h.definekey (all : "Y");
        h.definedone ();
    end;

    set TableA;

    if h.check() ne 0;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 20 May 2020 07:22:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Left-outer-join-using-HASH-only-rows-from-the-left-table/m-p/649116#M22250</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-05-20T07:22:20Z</dc:date>
    </item>
    <item>
      <title>Re: Left outer join using HASH - only rows from the left table</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Left-outer-join-using-HASH-only-rows-from-the-left-table/m-p/649117#M22251</link>
      <description>&lt;P&gt;Great! It seems to work. I will just perform some checks.&lt;/P&gt;</description>
      <pubDate>Wed, 20 May 2020 07:23:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Left-outer-join-using-HASH-only-rows-from-the-left-table/m-p/649117#M22251</guid>
      <dc:creator>Matos</dc:creator>
      <dc:date>2020-05-20T07:23:58Z</dc:date>
    </item>
  </channel>
</rss>

