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;
4 Réponses :
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;
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?
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;
Utilisez une option d'ensemble de données WHERE.
proc contents data=sashelp._all_ noprint out=class(where=(memname like 'CLASS%')); run;
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;