SAS中文论坛

标题: SAS9中可以实现非排序merge [打印本页]

作者: shiyiming    时间: 2004-9-22 16:46
标题: SAS9中可以实现非排序merge
对于作ETL程序的sasor来说,比较头疼的处理是在merge操作以前一定要对数据集进行排序,数据量小还好说,一旦处理大数据量,排序就成了比较费时的操作。
偶在项目中得到一位香港朋友的帮助,发现在sas9利用hash table对大表与小表的拼接完全可以省去sort,特与广大的sasor共享:
data data1;
        input a $ b $;
cards;
a 1
d 10
e 23
b 2
a 3
a 2
c 5
;

data data2;
        input a $ c $;
cards;
a za
b za
a zb
a zc
;

data tmpdata;
        set data2;
        if c = 'za';
run;

data out(drop=rc);
  length a c $ 8;
   if _n_=1 then do;
     declare hash h(dataset: "data2",hashexp:6);
         h.defineKey('a');
         h.defineData('c');
     h.defineDone();
         call missing(a, c);
   end;
   set data1;
   rc=h.find();
   if (rc = 0) then output;
run;
作者: shiyiming    时间: 2010-2-12 20:39
标题: Re: SAS9中可以实现非排序merge
学习了,刚接触Hash表,拜读你的代码。
作者: shiyiming    时间: 2010-2-13 02:33
标题: Re: SAS9中可以实现非排序merge
Of course, you can use hash table for merging without sorting but it's not good idea for large data set.
Because you have to load all data into memory in order to use hash table, so if the data set is exttremely large, it's not applicable.
作者: shiyiming    时间: 2010-2-24 23:23
标题: Re: SAS9中可以实现非排序merge
SQL不是也能实现merge without sort么?




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2