我正在UNIX env中使用SAS,我只想查看数据集的列名。我已经尝试了proc内容和proc打印,但是他们都列出了许多其他不需要的信息,因为它填满了我的腻子屏幕并且信息最终丢失了。
我也试图从sas元数据中得到这个东西,但这也不起作用。 我试过了:
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
答案 0 :(得分:20)
您使用错误的字典表来获取列名...
proc sql ; select name from dictionary.columns where memname = 'mydata' ; quit ;
或使用PROC CONTENTS
proc contents data=mydata out=meta (keep=NAME) ; run ; proc print data=meta ; run ;
答案 1 :(得分:2)
以前使用的是获取列表以及更多信息的列表,您可以像上一个答案一样添加保留选项。这只是演示了如何创建与元数据服务器的连接,以防对查看此帖子的任何人有用。
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;
答案 2 :(得分:0)
proc sql;
select *
from dictionary.tables
where libname="TEST" and memname="SWEDEN_ELIG_FILE_JUL";
quit;
答案 3 :(得分:0)
对于纯宏方法,请尝试以下操作:
%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;
用法:
%put List of Variables=%mf_getvarlist(sashelp.class);
返回:
变量列表=姓名性别年龄身高体重
来源:https://github.com/Boemska/macrocore/blob/master/base/mf_getvarlist.sas