2

I have a SAS dataset sized close to 20 GB, I am trying to use a where clause but am unable to do so as the size of the dataset is swelling up and I am getting as error stating: SAS file is full. When I last looked at the dataset being created in the library the size was close to 45GB. My code is:

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

segment has 2 possible values a and b (a is close to 50% of the rows)

can anyone tell me what is happening and why is the size of dataset increasing. I tried doing this with an if command also but to no avail.

Ishan Basu
  • 181
  • 1
  • 1
  • 12

1 Answers1

3

The code you provide creates new dataset fin2 keeping existing dataset fin untouched. So I assume you're not happy that fin has 20GB and fin2 has 45GB.

I expect fin was created earlier, is not stored in WORK library and has some compression option enabled. To verify, check output from:

proc contents data=fin;run;

Contrary, I expect the compression for fin2 is not enabled.

To decrease size of fin2 table try doing this with char or binary compression option:

data fin_segment_a (compress=char);
set fin;
where segment = "a";
drop segment;
run;
vasja
  • 4,732
  • 13
  • 15