SAS数据集的大小在使用where子句时增加

SAS数据集的大小在使用where子句时增加,sas,enterprise-guide,Sas,Enterprise Guide,我有一个大小接近20GB的SAS数据集, 我试图使用where子句,但无法这样做,因为数据集的大小正在膨胀,并且我得到的错误是:SAS文件已满。 当我上次查看在库中创建的数据集时,其大小接近45GB。 我的代码是: data fin2; set fin; where segment = "a"; run; 段有两个可能的值a和b(a接近行的50%) 有谁能告诉我发生了什么,为什么数据集的大小在增加。 我也尝试使用if命令执行此操作,但没有效果。您提供的代码将创建新的数据集fin2保持现有数据集

我有一个大小接近20GB的SAS数据集, 我试图使用where子句,但无法这样做,因为数据集的大小正在膨胀,并且我得到的错误是:SAS文件已满。 当我上次查看在库中创建的数据集时,其大小接近45GB。 我的代码是:

data fin2;
set fin;
where segment = "a";
run;
段有两个可能的值a和b(a接近行的50%)

有谁能告诉我发生了什么,为什么数据集的大小在增加。
我也尝试使用if命令执行此操作,但没有效果。

您提供的代码将创建新的数据集
fin2
保持现有数据集
fin
不变。因此,我假设您不满意
fin
有20GB,而
fin2
有45GB

我希望
fin
是较早创建的,未存储在工作库中,并且启用了一些压缩选项。要进行验证,请检查以下输出:

proc contents data=fin;run;
相反,我希望
fin2
的压缩是未启用的

要减小
fin2
表的大小,请尝试使用
char
binary
压缩选项:

data fin_segment_a (compress=char);
set fin;
where segment = "a";
drop segment;
run;

非常感谢,这很有帮助。