我在LINUX上有100GB的SAS数据集。从数据集中删除50 GB数据后为数据集分配的空间仍为100 GB。 我不确定这是与SAS还是LINUX有关。
以下代码正在执行删除:
Proc SQL; Delete * from dataset where Column=value; Quit;
答案 0 :(得分:1)
问题是您执行了逻辑删除而不是物理删除。 Gordon的正确评论指向SAS Note 32042,给出了对此行为的相当简洁的官方描述。 物理删除已删除记录的最简单方法是从当前文件重新创建数据文件,这将导致SAS清理逻辑删除的观察。 这可能类似于以下代码模式之一。
data mydata;
set mydata;
run;
proc sql;
create table mydata as
select * from mydata;
quit;
答案 1 :(得分:0)
正如其他人所说,data have;
set have;
where column ne value;
run;
执行逻辑删除,而不是物理删除。
虽然您可以分两步完成此操作,但在数据步骤中执行此操作会更快(因此您只有一步)。如果你的DELETE是一个简单的where子句:
%
WHERE子句使用SQL语法,因此LIKE和BETWEEN等合法。这会将删除处理为物理删除,并且您的新数据集将更小。