Могу ли я использовать подстановочные знаки в именах наборов данных для СОДЕРЖАНИЯ ПРОЦЕССА? - PullRequest
0 голосов
/ 13 февраля 2019

На сервере SAS у нас есть библиотека, которая содержит тысячи наборов данных.Я хочу каталогизировать содержимое их подмножества, имена которых начинаются с «prov».Могу ли я использовать подстановочный знак, чтобы указать это?

Я пытался:

PROC CONTENTS DATA=library.prov*;
RUN;

Но это просто создает журнал с таким сообщением об ошибке:

ERROR: File LIBRARY.PROV.DATA does not exist.

Я также пыталсяlibrary.prov%, и это выдает ту же ошибку.

Существует более 100 наборов данных, которые начинаются с "prov", поэтому я действительно не хочу делать их по одному за раз.Есть идеи?

Ответы [ 4 ]

0 голосов
/ 13 февраля 2019

Возможно, я использую другую версию проверки SAS, если у вас есть библиотека SASHELP, если так, попробуйте это, основываясь на моей заметке в вашем комментарии к предыдущему ответу, вы можете увидеть, что это работает для вас:

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;
0 голосов
/ 13 февраля 2019

В зависимости от того, какую информацию вы хотите получить в процедуре CONTENTS, вы можете просто использовать представления метаданных DICTIONARY.

proc sql ;
  create table want as 
  select *
  from dictionary.columns
  where libname = 'LIBREF'
    and memname like 'PROV%'
  ;
quit;
0 голосов
/ 13 февраля 2019

Используйте опцию набора данных WHERE.

proc contents data=sashelp._all_ noprint out=class(where=(memname like 'CLASS%'));
   run;
0 голосов
/ 13 февраля 2019

Когда вы задаете ключевое слово _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;
...