部分内容来源于:enter link desc ription here
提取数据集及变量信息
一、关于dictionary.tables与sashelp.vtable及dictionary.columns与sashelp.vcolumn之间的联系
| 表名 |
包含信息 |
视图名 |
| 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 |
- 1、数据字典把当前SAS环境中的所有内容进行汇总归类到这个里面,方便检索;
- 2、注意里面的libname(即library name)和menname(member name)要大写;
- 3、dictionary.tables中的数据集在sas中都有对应的视图,最常用的是:
dictonary.tables————sashelp.vtable:存储的是数据集;
dictionary.columns————sashelp.vcolumn:存储的是变量。
二、使用sql访问数据字典以提取数据集及变量信息
1、取出数据集的变量数和观测数
proc sql;
select nobs,nvar
into:nobs,:nvar
from dictionary.tables
where libname="WORK" and memname="TEST";
quit;
2、取出某一数据集的所有变量名
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_*/