10

我正在研究 UNIX 环境中的 SAS,我只想查看数据集的列名。我已经尝试过 proc contents 和 proc print,但是它们都列出了许多我不想要的其他不相关的信息,因为它填满了我的腻子屏幕并且信息最终丢失了。

我也试图从 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
4

4 回答 4

26

您使用错误的字典表来获取列名......

过程 sql ;
  选择名称
  来自dictionary.columns
  其中 memname = 'mydata'
  ;
退出 ;

或使用 PROC CONTENTS

proc 内容 data=mydata out=meta (keep=NAME) ;
跑 ;
过程打印数据=元;跑 ;
于 2013-07-25T07:34:58.443 回答
3

这是我以前用来获取包含更多信息的列列表的一个,您可以像上一个答案一样添加 keep 选项。这只是演示了如何创建到元数据服务器的连接,以防万一这对查看这篇文章的任何人都有用。

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;
于 2014-03-25T15:11:59.243 回答
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/sasjs/core/blob/main/base/mf_getvarlist.sas

于 2019-01-15T12:49:44.910 回答
-1
proc sql;
    select *
    from dictionary.tables
    where libname="TEST" and memname="SWEDEN_ELIG_FILE_JUL";
quit;
于 2016-09-21T20:26:04.683 回答