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

时间:2014-06-24 10:43:23

标签: sas enterprise-guide

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

data fin2;
set fin;
where segment = "a";
run;

段有两个可能的值a和b(a接近行的50%)

任何人都可以告诉我发生了什么以及为什么数据集的大小会增加。 我尝试使用if命令,但无济于事。

1 个答案:

答案 0 :(得分:3)

您提供的代码会创建新数据集fin2,以保持现有数据集fin不受影响。因此,我认为fin有20GB,fin2有45GB,我不高兴。

我希望先前创建fin,不存储在WORK库中, 启用某些压缩选项。要验证,请检查以下输出:

proc contents data=fin;run;

相反,我希望fin2的压缩功能启用。

要减少fin2表的大小,请尝试使用charbinary压缩选项执行此操作:

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