I have many files to be exported to Excel with several conditions in the data set, so I wrote a code like this :
data cars;
retain origin model cylinders ;
set sashelp.cars;
where Origin='Asia';
call execute ('proc export data=cars outfile="C:\TEMP\CARS_FROM_ASIA.csv" DBMS=CSV REPLACE; run;');
run;
I was disappointed when I saw that SAS exports the cars file line by line, so the execution time is very long (my files are much larger than this example).
Is there a way (or an option) to force the CALL EXECUTE to export the data in one batch ?
The difficulty is that you are generating many CALL EXECUTES ... one for each observation that meets the WHERE condition. You can get around that using:
if _n_=1 then
call execute ('proc export data=cars outfile="C:\TEMP\CARS_FROM_ASIA.csv" DBMS=CSV REPLACE; run;');
However, this may lead to other questions. Right now, there is no advantage to using CALL EXECUTE. You could have just hard-coded the PROC EXPORT following the DATA step. It is possible that the hard-coding will not be possible because your real problem is a bit more complex. So we may have to revisit the real problem. But for now, add IF _N_=1 THEN ....
The difficulty is that you are generating many CALL EXECUTES ... one for each observation that meets the WHERE condition. You can get around that using:
if _n_=1 then
call execute ('proc export data=cars outfile="C:\TEMP\CARS_FROM_ASIA.csv" DBMS=CSV REPLACE; run;');
However, this may lead to other questions. Right now, there is no advantage to using CALL EXECUTE. You could have just hard-coded the PROC EXPORT following the DATA step. It is possible that the hard-coding will not be possible because your real problem is a bit more complex. So we may have to revisit the real problem. But for now, add IF _N_=1 THEN ....
Thanks, the proposed solution worked. I knew I was missing only a small piece of code.
And yes, my files are more complex and I am calling macro variables in the export so to malke a long story short, it is better for me to have the export inside the data set.
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.