<?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: Hash join question in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Hash-join-question/m-p/197750#M49424</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ok, thanks.&amp;nbsp; Yes, I was wondering about the output, not the performance.&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 10 Mar 2015 03:07:44 GMT</pubDate>
    <dc:creator>evp000</dc:creator>
    <dc:date>2015-03-10T03:07:44Z</dc:date>
    <item>
      <title>Hash join question</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Hash-join-question/m-p/197747#M49421</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In Art Carpenter's Innovative SAS Techniques, Chapter 3, section 3.3.7 there is the following code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data trans;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; length lname $10 fname $6 sex $1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fname = 'Mary'; lname = 'Adams'; sex = 'N'; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fname = 'Joan'; lname = 'Adamson'; sex = 'x'; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fname = 'Peter'; lname = 'Anla'; sex = 'A'; output; &lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data newdemog (drop = rc);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; declare hash upd(hashexp:10);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; upd.definekey('lname','fname');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; upd.definedata('sex');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; upd.definedone();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do until(lasttrans);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set trans end=lasttrans;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rc=upd.add();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do until(lastdemog);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set advrtp.demog end=lastdemog;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rc=upd.find();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output newdemog;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stop;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Was it necessary to have the first loop to populate the hash table, or would it have been the same to just declare it with &lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008000;"&gt;declare hash upd (dataset: 'trans');&lt;/SPAN&gt;&amp;nbsp; ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Does this code do the same thing (without do loops)?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;data newdemog (drop = rc);&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if 0 then set &lt;SPAN style="font-size: 13.3333330154419px;"&gt;advrtp.demog&lt;/SPAN&gt; trans ;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if _n_ = 1 then &lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; declare hash upd(hashexp:10 &lt;SPAN style="font-size: 13.3333330154419px;"&gt;dataset: 'trans'&lt;/SPAN&gt; );&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; upd.definekey('lname','fname');&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; upd.definedata('sex');&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; upd.definedone();&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set advrtp.demog;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call missing(sex);&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rc = upd find();&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;run;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;Thanks for your input.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Mar 2015 17:43:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Hash-join-question/m-p/197747#M49421</guid>
      <dc:creator>evp000</dc:creator>
      <dc:date>2015-03-09T17:43:22Z</dc:date>
    </item>
    <item>
      <title>Re: Hash join question</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Hash-join-question/m-p/197748#M49422</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;When asking if they are the same, you are implying several things at the same time, for example: &lt;/P&gt;&lt;P&gt;1. Will they get the same outcome? Yes, I believe so.&lt;/P&gt;&lt;P&gt;2.Will they get the same/similar performance/efficiency? I have no clue. You will have to benchmark it yourself &lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://communities.sas.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;in between REPLACE() and ADD() methods, REPLACE() is the one that will produce different outcome if you have duplicated keys.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Mar 2015 21:17:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Hash-join-question/m-p/197748#M49422</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2015-03-09T21:17:20Z</dc:date>
    </item>
    <item>
      <title>Re: Hash join question</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Hash-join-question/m-p/197749#M49423</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes, the two codes produce the same output (though I have not tested).&lt;/P&gt;&lt;P&gt;I think in older versions of SAS there was no &lt;STRONG&gt;&lt;EM&gt;dasaset &lt;/EM&gt;&lt;/STRONG&gt;argument tag.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Mar 2015 21:23:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Hash-join-question/m-p/197749#M49423</guid>
      <dc:creator>gergely_batho</dc:creator>
      <dc:date>2015-03-09T21:23:18Z</dc:date>
    </item>
    <item>
      <title>Re: Hash join question</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Hash-join-question/m-p/197750#M49424</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ok, thanks.&amp;nbsp; Yes, I was wondering about the output, not the performance.&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Mar 2015 03:07:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Hash-join-question/m-p/197750#M49424</guid>
      <dc:creator>evp000</dc:creator>
      <dc:date>2015-03-10T03:07:44Z</dc:date>
    </item>
    <item>
      <title>Re: Hash join question</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Hash-join-question/m-p/197751#M49425</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Mar 2015 03:08:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Hash-join-question/m-p/197751#M49425</guid>
      <dc:creator>evp000</dc:creator>
      <dc:date>2015-03-10T03:08:55Z</dc:date>
    </item>
  </channel>
</rss>

