I have a table called all_data read into SAS that consists of 166 variables, of which column M1 is the primary key column, and consists of 50 million records - so as you can imagine the table is quite large, takes up about 55GB hard drive space. I have a macro which selects the primary key M1 column, and one of the other variables (so two columns in total) and reads it into a temporary table which the macro uses to compute. This macro will run for all the variables in the table so I am looking to save time. At the moment, I am using a Data step to single out my two columns at the start of the macro. The variable that differs each time is read in as the parameter var declared in the macro: data table_temp;
set all_data (keep=M1 &var.);
run; I currently have this running for the first variable, but this data step alone takes about 40 minutes, which is not ideal because there is a lot of processing after that. I was wondering if using a Proc SQL statement instead of a Data step would speed up this process? Something like below: PROC SQL;
create table table_temp as
select M1, &var.
from all_data;
quit; Or possibly using Proc SQL and selecting all and using a KEEP in the FROM statement? If anyone could offer advice on the speediest way to do this, with an explanation, it would be very much appreciated - thankyou!
... View more