楼主: jianke22
4610 10

SAS分割超大数据集 [推广有奖]

  • 2关注
  • 2粉丝

VIP

内阁大学士兼首席军机大臣

学科带头人

61%

还不是VIP/贵宾

-

威望
0
论坛币
4907 个
通用积分
38.8319
学术水平
0 点
热心指数
3 点
信用等级
1 点
经验
3747 点
帖子
597
精华
0
在线时间
4257 小时
注册时间
2007-8-8
最后登录
2024-4-24

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请问:我有一个12G的大数据,想按照id(从1 to 206)分成206个小文件,用循环可以做到。但是发现每次都要把这个大文件全部先读入,再根据where语句筛选出想要的id的观测值,很耗时间。各位,有更快些的方法吗?
二维码

扫码加我 拉你入群

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

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

关键词:大数据 数据集 Where HERE 筛选出 分割

车千乘,载燕南赵北,剑客奇才
沙发
ziyenano 发表于 2013-1-10 09:29:34 |只看作者 |坛友微信交流群
给id加个索引试试~

使用道具

藤椅
jianke22 在职认证  发表于 2013-1-10 09:30:52 |只看作者 |坛友微信交流群
ziyenano 发表于 2013-1-10 09:29
给id加个索引试试~
请问能具体详细点儿吗?谢谢啦!
车千乘,载燕南赵北,剑客奇才

使用道具

板凳
ziyenano 发表于 2013-1-10 09:36:43 |只看作者 |坛友微信交流群
jianke22 发表于 2013-1-10 09:30
请问能具体详细点儿吗?谢谢啦!
加索引就是用空间换时间~
用sql加个索引
proc sql;
create index id on table_name(id);
没猜错的话,是想把大数据集分割开来去匹配

使用道具

报纸
jianke22 在职认证  发表于 2013-1-10 09:50:11 |只看作者 |坛友微信交流群
ziyenano 发表于 2013-1-10 09:36
加索引就是用空间换时间~
用sql加个索引
proc sql;
data a1 a2 ……a206;
set b;
if id=1 then output a1;
if id=2 then output a2;
.
.
.
run;
类似这种方法是不是也可以?速度会快些吗?
车千乘,载燕南赵北,剑客奇才

使用道具

地板
ziyenano 发表于 2013-1-10 10:28:39 |只看作者 |坛友微信交流群
嗯 这样是快很多的
做了个测试
data ex;
do id=1 to 1000000;
output;
end;
run;

data temp;
do i=1 to 100;
temp=cats('test',i);
output;
end;
run;
proc sql noprint;
select temp into:data separated by ' ' from temp;
quit;
%macro test;
data &data;
set ex;
%do i=1 %to 100;
if 10000*%eval(&i-1)<id<=10000*&i
then output test&i;
%end;
run;
%mend;


%test


%macro test1;
%do i=1 %to 100;
data test&i;
set ex;
where 10000*%eval(&i-1)<id<10000*&i;
%end;
run;
%mend;
%test1
明显感觉上面那种方法更快

使用道具

7
playmore 发表于 2013-1-10 12:44:46 |只看作者 |坛友微信交流群
jianke22 发表于 2013-1-10 09:50
data a1 a2 ……a206;
set b;
if id=1 then output a1;
这样会快很多
我觉得不需要用SQL里的索引
SAS的data步真得挺快
SQL步可以用在必须要用SQL语句的时候,如分组统计
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

使用道具

8
ziyenano 发表于 2013-1-10 14:08:43 |只看作者 |坛友微信交流群
playmore 发表于 2013-1-10 12:44
这样会快很多
我觉得不需要用SQL里的索引
SAS的data步真得挺快
加了索引,data步也能更快

使用道具

9
playmore 发表于 2013-1-10 14:11:18 |只看作者 |坛友微信交流群
ziyenano 发表于 2013-1-10 14:08
加了索引,data步也能更快
是吗?具体怎么操作?
先在sql步里建索引,然后在data步里进行其他的操作?
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

使用道具

10
ziyenano 发表于 2013-1-10 14:18:05 |只看作者 |坛友微信交流群
playmore 发表于 2013-1-10 14:11
是吗?具体怎么操作?
先在sql步里建索引,然后在data步里进行其他的操作?
sql加的索引和data步加的索引是一样的,
不习惯用sql加索引,你可以用data步加索引,
加完索引,不管是data步还是sql查找匹配的速度
总是更快的

使用道具

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

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

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

GMT+8, 2024-4-26 19:19