SAS数据步骤I / O操作优化

时间:2014-08-05 17:31:53

标签: optimization sas

mydata1是一个沉重的SAS数据集(假设是8GB)

这样做时:

data mydata2;
set mydata1;
new_column = column1 + column2;
run;

SAS将只用一个新列写一个新的8GB。 它有效吗?

无论如何,SAS只写入文件mydata1的末尾,以便优化I / O操作的数量?

谢谢!

1 个答案:

答案 0 :(得分:1)

写入SAS数据集的方式,每个逻辑行都写在连续的块中;因此,如果不重写整个数据集,就不可能在适当的位置添加新变量。

如果你只是修改行或值,那是可能的;有关详细信息,请参阅MODIFY statement。这类似于SQL UPDATEDELETEINSERT命令(同时!)。

就选项而言,您可以使用data step view复制您想要的内容而无需I / O费用。

data mydata2/view=mydata2;
 set mydata1;
 new_column = column1 + column2;
run;

这不会将mydata2写出到单独的数据集中,而是存储有关如何创建它的说明;然后,当它以后被使用时(它可以被用作数据集,除了它不能被sort之类的东西修改),它上面有新的列。缺点是如果您多次使用它,每次使用它时都必须执行该操作;对于可能很昂贵的复杂操作(以上不会)。