Im checking my datasets and a way to shrink them to retrieve some space, and i saw that after deleting millions of rows from some datasets using proc sql; delete; the datasets keeps the size on the server file, and i saw in the dictionary table that there is column named delrows where you have all the data deleted "logically" from the dataset, but not from the file:
this is a sample of some tables with a lot of rows that are deleted from the dataset but keep, i supose logically in there, like a windows delete i supose there would be a "defragmentation" of the table to phisically delete this registers, but i didn't found anything on the kb to proceed with it, is there a way to permanently remove this rows and regain the space at administration level?
Or am i forced to do a DATA / SET step to recreate the table?
Thanks!
For SAS datasets, you basically have two options:
- as you suggested, recreate the dataset
- have the dataset compressed, and specify REUSE=YES. This will compact the dataset over time, but it will be fragmented as time goes by.
For SAS datasets, you basically have two options:
- as you suggested, recreate the dataset
- have the dataset compressed, and specify REUSE=YES. This will compact the dataset over time, but it will be fragmented as time goes by.
/*
Do you have SAS/IML?
If you have, you could try PURGE operator
Here is an example:
*/
libname x v9 'C:\temp\a';
data x.have;
set sashelp.heart;
run;
proc sql;
delete from x.have where status='Dead';
quit;
proc iml;
edit x.have;
purge;
close;
quit;
The SAS Users Group for Administrators (SUGA) is open to all SAS administrators and architects who install, update, manage or maintain a SAS deployment.
Learn how to explore data assets, create new data discovery agents, schedule data discovery agents, and much more.
Find more tutorials on the SAS Users YouTube channel.