Je travaille sur SAS sous env. UNIX et je souhaite afficher uniquement le nom de colonne d'un ensemble de données. J'ai essayé le contenu et l'impression proc, mais tous les deux énumèrent beaucoup d'autres informations irremplaçables que je ne souhaite pas car elles remplissent mon écran PuTTY et l'information est finalement perdue.
J'ai aussi essayé d'obtenir cette chose des métadonnées sas mais cela ne fonctionne pas non plus . J'ai essayé:
2? proc sql;
select *
from dictionary.tables
where libname='test' and memname='sweden_elig_file_jul';
quit;
5?
NOTE: No rows were selected.
6?
NOTE: PROCEDURE SQL used (Total process time):
real time 0.27 seconds
cpu time 0.11 seconds
Vous utilisez la mauvaise table de dictionnaire pour obtenir les noms de colonne ...
proc sql; sélectionnez le nom de dictionary.columns où memname = 'mydata' ; quitter ;
Ou en utilisant PROC CONTENTS
proc contenu data = mydata out = meta (keep = NAME); courir ; proc print data = meta; courir ;
En voici une que j'ai utilisée auparavant pour obtenir une liste de colonnes contenant un peu plus d'informations. Vous pouvez ajouter l'option Conserver comme dans la réponse précédente. Cela montre simplement comment créer une connexion au serveur de métadonnées, au cas où cela serait utile à quiconque visionnant cet article.
libname fetchlib meta
library="libraryName" metaserver="metaDataServerAddress"
password="yourPassword" port=1234
repname="yourRepositoryName" user="yourUserName";
proc contents data=fetchlib.YouDataSetName
memtype=DATA
out=outputDataSet
nodetails
noprint;
run;
Pour une approche macro pure, essayez ce qui suit:
%macro mf_getvarlist(libds
,dlm=%str( )
)/*/STORE SOURCE*/;
/* declare local vars */
%local outvar dsid nvars x rc dlm;
/* open dataset in macro */
%let dsid=%sysfunc(open(&libds));
%if &dsid %then %do;
%let nvars=%sysfunc(attrn(&dsid,NVARS));
%if &nvars>0 %then %do;
/* add first dataset variable to global macro variable */
%let outvar=%sysfunc(varname(&dsid,1));
/* add remaining variables with supplied delimeter */
%do x=2 %to &nvars;
%let outvar=&outvar.&dlm%sysfunc(varname(&dsid,&x));
%end;
%End;
%let rc=%sysfunc(close(&dsid));
%end;
%else %do;
%put unable to open &libds (rc=&dsid);
%let rc=%sysfunc(close(&dsid));
%end;
&outvar
%mend;
Usage:
%put List of Variables=%mf_getvarlist(sashelp.class);
Résultats:
Liste de variables = Nom Sexe Âge Taille Poids
source: https://github.com/Boemska/macrocore/blob/master/base/mf_getvarlist.sas
proc sql;
select *
from dictionary.tables
where libname="TEST" and memname="SWEDEN_ELIG_FILE_JUL";
quit;