2

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

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

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

谁能告诉我发生了什么以及为什么数据集的大小会增加。我也尝试使用 if 命令执行此操作,但无济于事。

4

1 回答 1

3

您提供的代码创建新数据集,fin2保持现有数据集fin不变。所以我假设你对fin拥有 20GB 和fin245GB 不满意。

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

proc contents data=fin;run;

相反,我希望fin2未启用压缩。

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

data fin_segment_a (compress=char);
set fin;
where segment = "a";
drop segment;
run;
于 2014-06-24T11:02:12.467 回答