2017-01-31 10 views
-1

Мне нужно экспортировать набор данных из SAS в Excel 2013 в виде CSV-файла. Однако мне нужно, чтобы имя файла было динамическим. В данном случае, мне нужно, чтобы выглядеть следующим образом:Экспорт данных из SAS в Excel с использованием имени настраиваемого файла

in_C000000_013117_65201.csv 

где строка «in_C000000_» будет оставаться постоянным, то строка «013117_» будет дата текущего дня, а строка «65201» будет количество строк самого набора данных.

Любая помощь, которую вы можете предоставить, будет очень признательна!

Спасибо!

ответ

0

Вот модифицированный макрос, который я написал в прошлом, который делает почти то, о чем вы просите. Если вы хотите заменить sysdate с датой в нужный формат, то это легко сделать, а также:

%let path = [[desired destination]]; 

%macro exporter(dataset); 

    proc sql noprint; 
     select count(*) into: obs 
     from &dataset.; 
    quit; 

    data temp; 
     format date mmddyy6.; 
     date = today(); 
    run; 

    proc sql noprint; 
     select date format mmddyy6. into: date_formatted 
     from temp; 
    quit; 

    proc export data = &dataset. 
     file = "&path.in_C000000_&date_formatted._%sysfunc(compress(&obs.)).csv" 
     dbms = csv replace; 
    run; 

%mend exporter; 

%exporter(your_dataset_here); 

Производит наборы данных в формате: in_C000000_020117_50000.csv

+0

'path' должен быть параметр к макросу, не глобальная переменная. Вам также не нужно «сжимать», так как 'in' должен позаботиться об этом автоматически (по крайней мере, 9.3+, может не иметь в 9.1 или 9.2, я не помню). – Joe

+0

Спасибо! Кажется, это работает для меня до сих пор. Какие изменения необходимо внести, чтобы отобразить дату как 013117, а не 31JAN17? –

+0

Вам просто нужно форматировать переменную даты. Может быть более короткий способ форматирования, чем тот, который я редактировал, но это работает. – superfluous