楼主: xiao_mingyan
2077 4

[问答] SAS中HASH表连接 [推广有奖]

  • 0关注
  • 0粉丝

高中生

55%

还不是VIP/贵宾

-

威望
0
论坛币
36 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
532 点
帖子
8
精华
0
在线时间
47 小时
注册时间
2014-6-3
最后登录
2019-12-27

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
求大神们解答,对于两个上千万观测的数据集,在SAS中用sql步做左连接时要耗时5-6个小时,而且连个表的key值字段名不一样,key值有两个,有什么方法可以加快速度进行两个表的连接?或者用哈希如何实现,哈希好像要求key名一样?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:HASH Has 什么方法 如何实现 Key SAS

沙发
marcus10 发表于 2017-7-22 18:57:11 |只看作者 |坛友微信交流群
不知道,同问

使用道具

我干过一样的事儿 1亿连1亿

实际上data step可能会快一点
如果你要hash的话 用这个
  1. data a1;
  2. input a b;
  3. datalines;
  4. 1 2
  5. 1 3
  6. 1 4
  7. ;
  8. run;
  9. data a2;
  10. input c d;
  11. datalines;
  12. 2 5
  13. 2 6
  14. 8 9
  15. ;
  16. run;
  17. data joined;
  18.         if _n_=1 then do;
  19.                 if 0 then set a1;
  20.                 declare hash left_join (dataset:"a1", multidata: "Y");
  21.                         left_join.definekey("b");
  22.                         left_join.definedata(all:"Y");
  23.                         left_join.definedone();
  24.                         left_join.add();
  25.                 end;
  26.         set a2;
  27.         temp=left_join.find(key:c);
  28.         if temp^=0 then temp=left_join.find(key:.);
  29.         do while (temp=0);
  30.                 output;
  31.                 temp=left_join.find_next();
  32.         end;
  33. drop temp;
  34. run;
复制代码

使用道具

板凳
xiao_mingyan 发表于 2017-7-25 16:06:56 |只看作者 |坛友微信交流群
大片阳光因你 发表于 2017-7-25 10:29
我干过一样的事儿 1亿连1亿

实际上data step可能会快一点
大神好,你说的data步是先排序再用merge吗,排序也很耗时的呀,还是另有其他方法??你的一亿连一亿是怎么实现的呢?
感觉还是hash速度会快点,但没怎么用过。想问一下hash对于两个表有相同的字段连接,需要在连接的同时对第二个表的字段重命名怎么处理呢?

使用道具

xiao_mingyan 发表于 2017-7-25 16:06
大神好,你说的data步是先排序再用merge吗,排序也很耗时的呀,还是另有其他方法??你的一亿连一亿是怎么 ...
对 先排序再merge 实际上我觉得data step的速度是最快的
hash的原理和sql差不多 都是调入内存进行操作

重名字段没问题的 上测试数据 我给你code

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-26 22:42