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.
SAS technical trainer Erin Winters shows you how to explore assets, create new data discovery agents, schedule data discovery agents, and much more.
Find more tutorials on the SAS Users YouTube channel.