在SAS服务器上,我们有一个包含数千个数据集的库。我想对这些内容的子集进行分类,所有内容的名称都以“ prov”开头。我可以使用通配符来指定吗?
我尝试过:
PROC CONTENTS DATA=library.prov*;
RUN;
但这只会产生一条带有以下错误消息的日志:
ERROR: File LIBRARY.PROV.DATA does not exist.
我还尝试了library.prov%,并且给出了相同的错误。
有100多个以“ prov”开头的数据集,所以我真的不想一次做一个。有什么想法吗?
答案 0 :(得分:4)
根据您想要CONTENTS过程产生什么信息,您可以只使用DICTIONARY元数据视图。
proc sql ;
create table want as
select *
from dictionary.columns
where libname = 'LIBREF'
and memname like 'PROV%'
;
quit;
答案 1 :(得分:1)
使用WHERE数据集选项。
proc contents data=sashelp._all_ noprint out=class(where=(memname like 'CLASS%'));
run;
答案 2 :(得分:0)
在_ALL_
语句中指定关键字PROC CONTENTS
时,该步骤将显示指定SAS库中所有SAS文件的列表。
示例:
PROC CONTENTS DATA=libref._ALL_ NODS;
RUN;
但是要仅打开以prov
开头的数据集,可以使用SQL并将CONTAINS
添加到WHERE
中,例如:
proc sql ;
create table mytables as
select *
from dictionary.tables
where libname = 'WORK'
order by memname ;
quit ;
现在运行:
PROC CONTENTS DATA mytables;
RUN;
答案 3 :(得分:0)
如果您具有库SASHELP,则我可能正在使用其他版本的SAS检查,如果是,请根据您对上一个响应的评论中的注释来尝试执行此操作,您可能会发现这很适合您:
proc sql outobs=100;
create table see as
select distinct libname,memname,crdate,modate from sashelp.vtable
where libname='LIBRARY' and memname like 'PROV%'
order by memname;
quit;