1
votes

Puis-je utiliser des caractères génériques dans les noms des ensembles de données pour PROC CONTENTS?

Sur le serveur SAS, nous avons une bibliothèque qui contient des milliers de jeux de données. Je veux cataloguer le contenu d'un sous-ensemble de ceux-ci, qui ont tous des noms commençant par "prov". Puis-je utiliser un caractère générique pour spécifier cela?

J'ai essayé:

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

Mais cela produit simplement un journal avec ce message d'erreur:

PROC CONTENTS DATA=library.prov*;
RUN;

sas

0 commentaires

4 Réponses :


0
votes

Lorsque vous spécifiez le mot-clé _ALL_ dans l'instruction PROC CONTENTS , l'étape affiche une liste de tous les fichiers SAS qui se trouvent dans la bibliothèque SAS spécifiée.

Exemple:

PROC CONTENTS DATA mytables;
RUN;

Mais pour ouvrir uniquement les ensembles de données commençant par prov , vous pouvez utiliser le SQL et ajouter CONTAINS code> à WHERE par exemple:

proc sql ;
  create table mytables as
  select *
  from dictionary.tables
  where libname = 'WORK'
  order by memname ;
quit ;

Maintenant, lancez simplement:

PROC CONTENTS DATA=libref._ALL_ NODS;
RUN;


2 commentaires

C'est super, mais il y a plus d'un millier de jeux de données dans la bibliothèque, et je ne veux que le contenu des 100 qui ont des noms commençant par "PROV".


Sauriez-vous lequel 100 vous voulez, est-ce basé sur leur dernière date de création ou une convention de dénomination?



4
votes

En fonction des informations que vous souhaitez que la procédure CONTENTS produise, vous pouvez simplement utiliser les vues de métadonnées DICTIONNAIRES.

proc sql ;
  create table want as 
  select *
  from dictionary.columns
  where libname = 'LIBREF'
    and memname like 'PROV%'
  ;
quit;


0 commentaires

1
votes

Utilisez une option d'ensemble de données WHERE.

proc contents data=sashelp._all_ noprint out=class(where=(memname like 'CLASS%'));
   run;


0 commentaires

0
votes

J'utilise peut-être une version différente de SAS.Vérifiez si vous avez la bibliothèque SASHELP si c'est le cas, essayez ceci en vous basant sur ma note dans votre commentaire sur la réponse précédente, vous verrez peut-être que cela fonctionne pour vous:

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 commentaires