<?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: Inner join with keep variables from only one table in HASH in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Inner-join-with-keep-variables-from-only-one-table-in-HASH/m-p/672294#M202032</link>
    <description>&lt;P&gt;1&lt;EM&gt;. How can I achieve this using HASH?&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Change&lt;/P&gt;
&lt;PRE&gt;  if wiki_lookup.check() = 0;
&lt;/PRE&gt;
&lt;P&gt;to&lt;/P&gt;
&lt;PRE&gt;  WIKI_FLAG = ( wiki_lookup.check() = 0 );
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;2. Scanning every row of a large table takes time. If the large table is indexed, retrieving 1/2000th of the table&amp;nbsp;using indexes might be faster.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sat, 25 Jul 2020 11:14:04 GMT</pubDate>
    <dc:creator>ChrisNZ</dc:creator>
    <dc:date>2020-07-25T11:14:04Z</dc:date>
    <item>
      <title>Inner join with keep variables from only one table in HASH</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Inner-join-with-keep-variables-from-only-one-table-in-HASH/m-p/672116#M201943</link>
      <description>&lt;P&gt;Hi Experts,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have two tables, Table DCS (2 billion rows) and table Wiki (1 million rows). I would like to translate the following SQL code into SAS Hash.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Proc SQL;

create table want as
Select
 a.*
from DCS as a
inner join Wiki as b
on a.sourcekey = b.S_Key and a.sourcesystemid = b.s_ID;
quit;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Sample data:&lt;/P&gt;&lt;P&gt;DCS table&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Snapshot_date&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Sourcekey&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Sourcesystemid&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Amount&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Riskbucket&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/01/2000&lt;/TD&gt;&lt;TD&gt;958-985&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;5698&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/01/2000&lt;/TD&gt;&lt;TD&gt;958-985&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;3256&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/01/2000&lt;/TD&gt;&lt;TD&gt;958-985&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;3254&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;04/01/2000&lt;/TD&gt;&lt;TD&gt;958-985&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;8523&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/01/2000&lt;/TD&gt;&lt;TD&gt;958-986&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;5698&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/01/2000&lt;/TD&gt;&lt;TD&gt;958-986&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;3256&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/01/2000&lt;/TD&gt;&lt;TD&gt;958-986&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;3254&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;04/01/2000&lt;/TD&gt;&lt;TD&gt;958-986&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;8523&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/01/2000&lt;/TD&gt;&lt;TD&gt;958-989&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;5698&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/01/2000&lt;/TD&gt;&lt;TD&gt;958-989&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3256&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/01/2000&lt;/TD&gt;&lt;TD&gt;958-989&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3254&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;04/01/2000&lt;/TD&gt;&lt;TD&gt;958-989&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;8523&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/01/2000&lt;/TD&gt;&lt;TD&gt;958-989&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;5698&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/01/2000&lt;/TD&gt;&lt;TD&gt;958-989&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;3256&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/01/2000&lt;/TD&gt;&lt;TD&gt;958-989&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;3254&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;04/01/2000&lt;/TD&gt;&lt;TD&gt;958-989&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;8523&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Wiki table&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Sourcekey&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Sourcesystemid&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;958-985&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;958-986&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;958-999&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;958-989&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;P&gt;Results table&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Snapshot_date&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Sourcekey&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Sourcesystemid&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Amount&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Riskbucket&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/01/2000&lt;/TD&gt;&lt;TD&gt;958-985&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;5698&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/01/2000&lt;/TD&gt;&lt;TD&gt;958-985&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;3256&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/01/2000&lt;/TD&gt;&lt;TD&gt;958-985&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;3254&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;04/01/2000&lt;/TD&gt;&lt;TD&gt;958-985&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;8523&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/01/2000&lt;/TD&gt;&lt;TD&gt;958-986&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;5698&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/01/2000&lt;/TD&gt;&lt;TD&gt;958-986&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;3256&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/01/2000&lt;/TD&gt;&lt;TD&gt;958-986&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;3254&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;04/01/2000&lt;/TD&gt;&lt;TD&gt;958-986&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;8523&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/01/2000&lt;/TD&gt;&lt;TD&gt;958-989&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;5698&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/01/2000&lt;/TD&gt;&lt;TD&gt;958-989&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3256&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/01/2000&lt;/TD&gt;&lt;TD&gt;958-989&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3254&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;04/01/2000&lt;/TD&gt;&lt;TD&gt;958-989&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;8523&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Since these tables are large, I think HASH technique will help me to get the results quickly.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Myu&lt;/P&gt;</description>
      <pubDate>Fri, 24 Jul 2020 15:26:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Inner-join-with-keep-variables-from-only-one-table-in-HASH/m-p/672116#M201943</guid>
      <dc:creator>Myurathan</dc:creator>
      <dc:date>2020-07-24T15:26:50Z</dc:date>
    </item>
    <item>
      <title>Re: Inner join with keep variables from only one table in HASH</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Inner-join-with-keep-variables-from-only-one-table-in-HASH/m-p/672127#M201950</link>
      <description>&lt;UL&gt;
&lt;LI&gt;Hash the 1M keys from Wiki&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="font-family: inherit;"&gt;Implicitly loop DCS with SET&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="font-family: inherit;"&gt;Output only on key found (.check() method)&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Example:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Data:&lt;/P&gt;
&lt;LI-SPOILER&gt;
&lt;PRE&gt;data DCS;
input Snapshot_date mmddyy10.	Sourcekey	$ Sourcesystemid	Amount	Riskbucket;
format Snapshot_date mmddyy10.;
datalines;
01/01/2000	958-985	5	5698	9
02/01/2000	958-985	5	3256	0
03/01/2000	958-985	5	3254	5
04/01/2000	958-985	5	8523	6
01/01/2000	958-986	7	5698	9
02/01/2000	958-986	7	3256	0
03/01/2000	958-986	7	3254	5
04/01/2000	958-986	7	8523	6
01/01/2000	958-989	2	5698	9
02/01/2000	958-989	2	3256	0
03/01/2000	958-989	2	3254	5
04/01/2000	958-989	2	8523	6
01/01/2000	958-989	6	5698	9
02/01/2000	958-989	6	3256	0
03/01/2000	958-989	6	3254	5
04/01/2000	958-989	2	8523	6
;

data Wiki;
input Sourcekey $	Sourcesystemid;
datalines;
958-985	5
958-986	7
958-999	5
958-989	2
;
&lt;/PRE&gt;
&lt;/LI-SPOILER&gt;
&lt;P&gt;Code:&lt;/P&gt;
&lt;PRE&gt;data want;
  if _n_ = 1 then do;
    declare hash wiki_lookup(dataset:'wiki');
    wiki_lookup.defineKey('Sourcekey', 'Sourcesystemid');
    wiki_lookup.defineDone();
  end;

  set DCS;

  if wiki_lookup.check() = 0;
run;&lt;/PRE&gt;
&lt;P&gt;Note, your sample data has a last row&lt;/P&gt;
&lt;PRE&gt;04/01/2000	958-989	2	8523	6&lt;/PRE&gt;
&lt;P&gt;that is a duplicate of an earlier row&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 24 Jul 2020 16:16:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Inner-join-with-keep-variables-from-only-one-table-in-HASH/m-p/672127#M201950</guid>
      <dc:creator>RichardDeVen</dc:creator>
      <dc:date>2020-07-24T16:16:40Z</dc:date>
    </item>
    <item>
      <title>Re: Inner join with keep variables from only one table in HASH</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Inner-join-with-keep-variables-from-only-one-table-in-HASH/m-p/672133#M201952</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12477"&gt;@RichardDeVen&lt;/a&gt; proposed a very good solution. You may also want to add the argument HASHEXP:9 or HASHEXP:10 to the DECLARE statement to increase the hash table size and make it more efficient when dealing with a million entries.&lt;/P&gt;</description>
      <pubDate>Fri, 24 Jul 2020 16:32:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Inner-join-with-keep-variables-from-only-one-table-in-HASH/m-p/672133#M201952</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2020-07-24T16:32:16Z</dc:date>
    </item>
    <item>
      <title>Re: Inner join with keep variables from only one table in HASH</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Inner-join-with-keep-variables-from-only-one-table-in-HASH/m-p/672283#M202024</link>
      <description>@RichardADeVenezia Thank you so much for your help.&lt;BR /&gt;followup question: if I want to do left join and wanna create a variable (wiki_Flag) that indicate that the contract is available in wiki table. How can I achieve this using HASH?&lt;BR /&gt;Thanks in advance.&lt;BR /&gt;</description>
      <pubDate>Sat, 25 Jul 2020 09:30:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Inner-join-with-keep-variables-from-only-one-table-in-HASH/m-p/672283#M202024</guid>
      <dc:creator>Myurathan</dc:creator>
      <dc:date>2020-07-25T09:30:16Z</dc:date>
    </item>
    <item>
      <title>Re: Inner join with keep variables from only one table in HASH</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Inner-join-with-keep-variables-from-only-one-table-in-HASH/m-p/672293#M202031</link>
      <description>&lt;P&gt;The hash method check returns 0 when a hash key corresponding to the current PDV variables exists.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;An edit of the source code line from&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;  if wiki_lookup.check() = 0;&lt;/PRE&gt;
&lt;P&gt;to&lt;/P&gt;
&lt;PRE&gt;  wiki_flag = (wiki_lookup.check() = 0);&lt;/PRE&gt;
&lt;P&gt;will change the program flow from a subsetting-if to a flag variable assignment&lt;/P&gt;</description>
      <pubDate>Sat, 25 Jul 2020 11:08:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Inner-join-with-keep-variables-from-only-one-table-in-HASH/m-p/672293#M202031</guid>
      <dc:creator>RichardDeVen</dc:creator>
      <dc:date>2020-07-25T11:08:25Z</dc:date>
    </item>
    <item>
      <title>Re: Inner join with keep variables from only one table in HASH</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Inner-join-with-keep-variables-from-only-one-table-in-HASH/m-p/672294#M202032</link>
      <description>&lt;P&gt;1&lt;EM&gt;. How can I achieve this using HASH?&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Change&lt;/P&gt;
&lt;PRE&gt;  if wiki_lookup.check() = 0;
&lt;/PRE&gt;
&lt;P&gt;to&lt;/P&gt;
&lt;PRE&gt;  WIKI_FLAG = ( wiki_lookup.check() = 0 );
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;2. Scanning every row of a large table takes time. If the large table is indexed, retrieving 1/2000th of the table&amp;nbsp;using indexes might be faster.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 25 Jul 2020 11:14:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Inner-join-with-keep-variables-from-only-one-table-in-HASH/m-p/672294#M202032</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2020-07-25T11:14:04Z</dc:date>
    </item>
  </channel>
</rss>

