2017-01-31 6 views
-1

Je dois exporter un fichier de SAS vers Excel 2013 en tant que fichier .csv. Cependant, j'ai besoin que le nom du fichier soit dynamique. Dans ce cas, je dois le faire apparaître comme:Exportation de données de SAS vers Excel avec un nom de fichier personnalisé

in_C000000_013117_65201.csv 

où la chaîne, « in_C000000_ » restera constante, la chaîne « 013117_ » sera la date de la journée en cours, et la chaîne « 65201 » sera la nombre de lignes de l'ensemble de données lui-même.

Toute aide que vous pourriez fournir serait grandement appréciée!

Merci!

Répondre

0

Voici une macro modifiée que j'ai écrite dans le passé qui fait presque exactement ce que vous demandez. Si vous voulez remplacer sysdate avec une date dans le format souhaité, qui est facile à faire aussi bien:

%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); 

Produit des jeux de données dans le format: in_C000000_020117_50000.csv

+0

'path' doit être un paramètre à la macro, non une variable globale. Vous ne devriez pas avoir besoin de 'compresser 'puisque' into' devrait s'en charger automatiquement (au moins 9.3+, peut ne pas avoir dans 9.1 ou 9.2, je ne me souviens pas). – Joe

+0

Merci! Cela semble fonctionner pour moi jusqu'à présent. Quels changements faudrait-il faire pour afficher la date comme 013117 plutôt que 31JAN17? –

+0

Vous avez juste besoin de formater votre variable de date. Il peut y avoir un formatage plus court que celui que j'ai édité, mais le travail ci-dessus fonctionne. – superfluous