我有一个大小接近20 GB的SAS数据集, 我正在尝试使用where子句但由于数据集的大小正在膨胀而无法这样做,我收到的错误是:SAS文件已满。 当我上次查看库中创建的数据集时,大小接近45GB。 我的代码是:
data fin2;
set fin;
where segment = "a";
run;
段有两个可能的值a和b(a接近行的50%)
任何人都可以告诉我发生了什么以及为什么数据集的大小会增加。 我尝试使用if命令,但无济于事。
答案 0 :(得分:3)
您提供的代码会创建新数据集fin2
,以保持现有数据集fin
不受影响。因此,我认为fin
有20GB,fin2
有45GB,我不高兴。
我希望先前创建fin
,不存储在WORK库中, 启用某些压缩选项。要验证,请检查以下输出:
proc contents data=fin;run;
相反,我希望fin2
的压缩功能不启用。
要减少fin2
表的大小,请尝试使用char
或binary
压缩选项执行此操作:
data fin_segment_a (compress=char);
set fin;
where segment = "a";
drop segment;
run;