Help using Base SAS procedures

cartesian merge with hash tables

Reply
N/A
Posts: 0

cartesian merge with hash tables

Hi,

I have two tables which have one common column.
First table have 222874 rows and 43 columns. Second table have 4537 rows and 8 columns.
Normally I use sql to merge them, you can see below:
===========================================================
proc sql;
create table RAWDB2 as select a.*, b.linea, rskod, rsshd, rstag from lib.zH41006
a, line b where a.urkod=b.urkod;
===========================================================
But it takes too much time. How can I use hash table for this issue.

Thanks,
sinan
Regular Contributor
Posts: 171

Re: cartesian merge with hash tables

Take a look at this paper. It has some useful information about using duplicate keys to make SQL like joins with hash objects.

support.sas.com/rnd/base/datastep/dot/better-hashing-sas92.pdf
Super User
Posts: 9,766

Re: cartesian merge with hash tables

Code is not test.


[pre]
data result;
declare hash find(hashexp: 16);
find.definekey('urkod');
find.definedata('linea',' rskod',......);
find.definedone();

do until(last);
set line end=last;
find.add();
end;

do until(_last);
set lib.zh41006;
rc= find.find();
if rc=0 then output;
end;
stop;
run;




Ksharp
Ask a Question
Discussion stats
  • 2 replies
  • 136 views
  • 0 likes
  • 3 in conversation