来自 http://www.cnblogs.com/qlp1982/archive/2012/08/20/2647641.html
访问数据字典方法如下:
1.直接用SQL语句访问Dictionary table
2.访问SAShelp View
表名 | 包含信息 | 视图名 |
DICTIONARY.CATALOGS | SAS目录册及所包含的条目 | SASHELP.VCATALG |
DICTIONARY.COLUMNS | 列(或变量)及其特征 | SASHELP.VCOLUMN |
DICTIONARY.DICTIONARIES | 所有表词典 | SASHELP.VDCTNRY |
DICTIONARY.EXTFILES | 文件标识名和外部文件物理存储地址 | SASHELP.VEXTFL |
DICTIONARY.INDEXES | SAS数据集索引 | SASHELP.VINDEX |
DICTIONARY.MEMBERS | SAS数据集 | SASHELP.VMEMBER |
DICTIONARY.OPTIONS | 目前设定的SAS系统选项 | SASHELP.VOPTION |
DICTIONARY.STYLES | ODS类型 | SASHELP.VSTYLE |
DICTIONARY.TABLES | SAS数据文件和视图 | SASHELP.VTABLE |
DICTIONARY.VIEWS | SAS数据视图 | SASHELP.VVIEW |
打开explorer window,在SASHELP这个library下,以V开头的视图实际上是Dictionary table内容的复制。如
proc sql;describe view sashelp.voption;quit;
可以看到voption这个视图的内容来自dictionary.options。
而对于View,除了SQL,直接用data步或proc步都可以访问。如
data test2;
set sashelp.vcolumn;
where libname=”WORK” and memname=”TEST”;
run;
或者
proc contents data=sashelp.voption;
run;
或者在command栏输入viewtable sashelp.voption。
Dictionary table的最常见的几个应用:
一、取出数据集的变量数和观测数
proc sql;
select nobs,nvar
into:nobs,:nvar
from dictionary.tables
where libname=”WORK” and memname=”TEST”;
quit;
二、取出某一数据集的所有变量名
proc sql;
select name into :varlist
separated by ” ”
from dictionary.columns
where libname=”WORK” and memname=”TEST”;
quit;
%put &varlist.;
三、取出某个library下所有数据集名
proc sql;
select memname into :dsname
separated by ” ”
from dictionary.tables
where libname=”WORK”;
quit;
四、取出所有的宏变量名
proc sql noprint;
create table macv as
select name
from dictionary.macros
where offset=0 and scope=”GLOBAL”;
quit;
效果同 %put _global_;