私は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
列名を取得するために間違った辞書テーブルを使用しています...
proc sql; dictionary [columns から名前 を選択しますmemname = 'mydata' ; quit;
またはPROC CONTENTSを使用する
procの内容data = mydata out = meta(keep = NAME); 実行; proc print data = meta;実行;
これは、以前に使用したもので、もう少し情報が含まれている列のリストを取得します。前の回答のように、保持オプションを追加できます。これは、メタデータサーバーへの接続を作成する方法を示すだけです。
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;
純粋なマクロアプローチについては、以下を試してください。
%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
proc sql;
select *
from dictionary.tables
where libname="TEST" and memname="SWEDEN_ELIG_FILE_JUL";
quit;