web-dev-qa-db-ja.com

データセットの列名のみを一覧表示する

私はSASで作業しており、データセットの列名のみを表示したいのです。procの内容とprocの印刷を試しましたが、どちらも他の関連性のない多くの情報をリストしています。 PuTTY画面がいっぱいになり、最終的に情報が失われるため、私は必要ありません。

私はまた、これを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
9
siso

列名を取得するために間違った辞書テーブルを使用しています...

 proc sql; 
 dictionary [columns 
から名前
を選択しますmemname = 'mydata' 
; 
 quit; 

またはPROC CONTENTSを使用する

 procの内容data = mydata out = meta(keep = NAME); 
実行; 
 proc print data = meta;実行; 
20
Chris J

これは、以前に使用したもので、もう少し情報が含まれている列のリストを取得します。前の回答のように、保持オプションを追加できます。これは、メタデータサーバーへの接続を作成する方法を示すだけです。

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
Scampbell

純粋なマクロアプローチについては、以下を試してください。

%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

0
Allan Bowe
proc sql;
    select *
    from dictionary.tables
    where libname="TEST" and memname="SWEDEN_ELIG_FILE_JUL";
quit;
0
Sri Ram