Worldwide Contacts

If you don't find your country in the list, see our worldwide contacts in:

Africa | Asia/Pacific | Europe | Latin America & Caribbean | Middle East | North America

 
Services
Consulting
Formation
Support Clients
Documentation
SAS Academic
 
Caractéristiques :
  • Catégories : SAS/Base
  • OS : Windows, Unix, z /Os
  • Version : SAS® 9.1.3
  • Vérifié le 01/12/2006

Les nouveautés de la PROC SORT

La procédure SORT permet de trier des tables SAS. Découvrez les nouvelles options disponibles depuis SAS®9.

L’option DATECOPY
La procédure SORT permet de trier une table en indiquant une table en sortie. Par défaut, les attributs ‘date et heure de création’ et ‘date et heure de modification’ de la table en sortie correspondent à la date et l’heure de l’exécution de la procédure SORT.
L’option DATECOPY permet de créer la table en sortie sans mettre à jour ces attributs : elle hérite directement des attributs de la table principale.

Exemple 1 : la table est triée sans l’option DATECOPY. Le code est soumis à 13h32 le 20/11/06 :
proc sort data=sashelp.class out=sorted ;
by name ;
run ;


La date et l’heure de création et de modification ont été mises à jour avec le jour et l’heure système :

Exemple 2 : la table est triée avec l’option DATECOPY. Le code est soumis à 13h40 le 20/11/06 :
proc sort data= sorted out=sorted datecopy ;
by name ;
run ;


La date et l’heure de création et de modification n’ont pas été mises à jour.

L’option DUPOUT

Cette option permet d’indiquer une table en sortie dans laquelle seront copiées les observations en doublon. Elle doit être utilisée avec les options NODUPKEY ou NODUPREC :
NODUPKEY supprime les observations dont la clé de tri est en doublon (instruction BY)
NODUPREC supprime les observations dont toutes les variables sont en doublons.

Exemple : La table work.table contient deux lignes identiques (n°3 et 6).

 

Exécution du programme SAS ci-dessous :

proc sort data=table out=out nodupkey DUPOUT=dupocc ;
by A ;
run ;

La table en sortie du tri ne contient plus de doublon.


La table qui contient les doublons a une observation :

L’option OVERWRITE

Par défaut, lors d’un tri, des fichiers temporaires sont créés, multipliant par 3 l’espace disque utilisé.

Par exemple, la table WORK.CLASS a une taille de 45 Mo. Lors d’un tri simple, 2 tables temporaires vont être créées (un fichier ‘SAS Utility’ et un fichier ‘LCK’), puis supprimées une fois l’exécution terminée. Au total, le tri aura utilisé environ 154 Mo.

proc sort data=class ;
by name ;
run ;

1) le fichier UTILITY est créé dans la bibliothèque WORK,
2) le fichier LCK est créé dans la bibliothèque WORK,
3) la table principale est mise à jour,
4) les fichiers UTILITY et LCK sont supprimés.

L’option OVERWRITE évite la création du fichier LCK. L’exemple ci-dessous décrit les étapes de l’exécution.

options sortpgm=SAS ;
proc sort data=class overwrite thread ;
by name ;
run ;

1) le fichier UTILITY est créé dans un sous-répertoire de la WORK,
2) la table CLASS est vidée.
3) les observations triées sont chargées dans la table CLASS directement :

4) le fichier UTILITY est supprimé.

Utilisez cette option uniquement lorsqu’il existe une sauvegarde de la table en entrée ou qu’elle peut facilement être recréée et réalimentée. En effet, s’il se produit une erreur lors du tri, toutes les données seront perdues.
Cette option n’est pas compatible avec l’option TAGSORT. En revanche, il faut s’assurer que le tri sera de type SAS et qu’il sera multithreadé.

L’option THREADS|NOTHREADS
Cette option active ou désactive l’exécution en multiprocessus d’un tri.

  • Exemple 1 : le tri n’est pas multithreadé. Le temps d’exécution est de 14.04 secondes.
    13 proc sort data=class nothread ;
    14 by age name ;
    15 run ;

NOTE: There were 950000 observations read from the data set WORK.CLASS.
NOTE: SAS sort was used.
NOTE: The data set WORK.CLASS has 950000 observations and 6 variables.
NOTE: PROCEDURE SORT used (Total process time):
real time 14.04 seconds
cpu time 1.75 seconds

  • Exemple 2 : le tri est multithreadé. Le temps d’exécution est de 9.90 secondes.
    23 proc sort data=class thread ;
    24 by age name ;
    25 run ;

NOTE: There were 950000 observations read from the data set WORK.CLASS.
NOTE: SAS threaded sort was used.
NOTE: The data set WORK.CLASS has 950000 observations and 6 variables.
NOTE: PROCEDURE SORT used (Total process time):
real time 9.90 seconds
cpu time 4.45 seconds

Si vous souhaitez connaître toutes les nouvelles options des procédures SAS depuis l’arrivée de SAS9, vous pouvez consulter :


Céline Dastre-Vigne
Consultant Support Clients - SAS France