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

Optimization SAS数据步骤I/O操作优化,optimization,sas,Optimization,Sas,mydata1是一个繁重的SAS数据集(比如8GB) 执行此操作时: data mydata2; set mydata1; new_column = column1 + column2; run; SAS将只编写一个新的8GB列。 效率高吗 SAS是否只会写入文件mydata1的末尾,以便优化I/O操作的数量 谢谢 SAS数据集的写入方式是,将每个逻辑行写入连续的块中;因此,如果不重写整个数据集,就不可能在适当的位置添加新变量 如果只是修改行或值,这是可能的;有关更多详细信息,请参阅。这类似于

mydata1是一个繁重的SAS数据集(比如8GB)

执行此操作时:

data mydata2;
set mydata1;
new_column = column1 + column2;
run;
SAS将只编写一个新的8GB列。 效率高吗

SAS是否只会写入文件mydata1的末尾,以便优化I/O操作的数量


谢谢

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

如果只是修改行或值,这是可能的;有关更多详细信息,请参阅。这类似于SQL
UPDATE
DELETE
INSERT
命令(立即!)

在选项方面,您可以使用
数据步骤视图
复制您想要的内容,而无需I/O成本

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

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

SAS正在做出的有趣选择。。。因此,我想,如果你让过程重复,那么它并不最适合于大型数据集。除其他外,它的目的是让数据访问变得可预测。比如说,它与SQL的工作方式并没有太大区别;您必须
altertable
来添加列,然后才能将数据追加到该列中,而不能仅使用
update
来添加内容。一般来说,如果您关心这类事情,您应该提前构建数据结构,以获得正确的列。