Lors de ses débuts avec SAS, l’étape data est souvent la méthode utilisée pour créer une table (data set) dans une bibliothèque différente de celle d’origine. Cette approche est tout à fait logique lorsque des modifications sont intervenues sur la table. Par contre, dans le cas d’un copier 1/1, la performance est meilleure avec un PROC COPY car les observations ne sont pas lues.
1. Créer une table SAS, une vue SAS et fichier catalogue pour les formats pour l’exemple
Afin de monter les variantes de la procédure PROC COPY, trois types de fichiers (member type) sont créés dans la bibliothèque WORK:
- une table SAS (data set) nommée DSN
- une vue (view) nommée VIEW NAME
- un format catalog nommé FORMATS par défaut et contenant un seul format ici : NY
data dsn;
x=1;
run;
proc sql;
create view viewname as
select *
from sashelp.class;
quit;
proc format;
value ny 0=’No’
1=’Yes’;
run;
2. Copier tous les trois fichiers SAS dans la bibliothèque SASREF
Par défaut, tous les types de fichiers de la bibliothèque WORK sont copiés dans SASREF
libname sasref ‘C:/sasref’;
proc copy in=work out=sasref;
run;
libname sasref;
3. Ajouter de la flexibilité
Pour ajouter de la flexibilité, vous pouvez limiter le choix
- à un type de fichier : memtype=data, memtype=view ou memtype=catalog
- à des noms de fichiers à sélecionner (instruction SELECT) ou à exclure (instruction EXCLUDE)
proc copy in=work out=sasref; *memtype=data;
*select dsn formats;
*exclude dsn formats;
run;
Rien ne vous empêche d’utiliser plusieurs instructions SELECT (ou EXCLUDE) : une par type de fichiers
proc copy in=work out=sasref;
select dsn / memtype=data;
select formats / memtype=catalog;
run;
4. PROC DATASETS alternative à PROC COPY
Développée plus récemment, la procédure PROC COPY englobe les fonctionnalités de plusieurs procédures et est enrichie de commandes qui lui sont propres.
PROC COPY fait partie des fonctionalités de PROC DATASETS. Par défaut, la bibliothèque de la procédure DATASETS est WORK. Pour la modifier au seul niveau de COPY, ajouter IN= dans l’instruction COPY. Cela aura la priorité sur l’option LIBRARY= de l’instruction PROC DATASETS.
proc datasets; * library=work; *memtype=data;
copy /*in=work*/ out=sasref;
select dsn / memtype=data;
select formats / memtype=catalog;
run;
Lectures complémentaires :
- Modifier un data set sans le lire (formater, renommer, libeller)
- Supprimer un data set en 6 points (PROC DATASETS)
- Supprimer des formats
- Empiler des données
En savoir plus avec la SAS Online Doc :
- The COPY Procedure
- The DATASETS Procedure (l’intruction COPY)
- The DATASETS Procedure for Unix
- The DATASETS Procedure for Windows
- The DATASETS Procedure for z/OS