Output Delivery System sous SAS

L'ODS ou comment filtrer ou rediriger ses rapports SAS

L'ODS pour Output Delivery System a initialement été pensé pour permettre à l'analyste de diriger ses rapports SAS vers diverses sorties (PDF, Excel, HTML ...). L'emploi qui en a été fait s'est généralisé au point de constituer désormais une collection d'instructions permettant de gérer les rapports. Ainsi l'ODS peut nous permettre de contrôler le format de sortie, la visibilité des blocs ou encore de gérer les graphiques. Nous nous attarderons dans cet articles sur les 2 premiers points.

La sélection ODS

Nous avons traité dans un article précèdent de la proc univariate. C'est un bon exemple d'instruction SAS générant par défaut un rapport relativement chargé. L'ODS vous nous permettre d'élaguer un peu la sortie afin de n'éditer que les tableaux qui nous intéressent.
Disons par exemple, que nous voulons n'éditer que les quantiles dans le rapport issu de la proc univariate. Voici tout d’abord, ci-dessous, l'instruction proc univariate telle que nous l'avions présentée :


proc univariate data=work.skate;
run;

Et voici l'ajout nécessaire pour n'éditer que les quantiles :


ods select Quantiles;
proc univariate data=work.skate;
run;
SAS proc ODS Output Delivery System

Comme vous le constatez il suffit d'ajouter une seule instruction, ods en l'occurrence, avant le bloc univariate. Le souci, vous en conviendrez, c'est qu'il faut au préalable connaitre l'identifiant du tableau que l'on désire conserver (ici "Quantiles"). L'identification des noms de sortie est possible via ce que SAS appelle une trace.

Les traces ODS

Activons la trace et voyons ce qu'il se passe :


ods trace on;
proc univariate data=work.skate;
run;
ods trace off;

Nous avons ci-dessus lancer une proc univariate après avoir activé une trace ods. Nous constatons également que nous avons pris soin de désactiver cette trace après le bloc univariate. La sortie de la proc univariate reste identique, le changement notable se trouve dans le journal puisque celui-ci, en plus des informations relatives à la durée du traitement, laisse désormais apparaitre ceci :

 Sortie ajoutée :
 -------------
 Nom :       Moments
 Libellé :      Moments
 Modèle :   base.univariate.Moments
 Chemin :       Univariate.age.Moments
 -------------
 
 Sortie ajoutée :
 -------------
 Nom :       BasicMeasures
 Libellé :      Mesures de base de tendance centrale et de variabilité
 Modèle :   base.univariate.Measures
 Chemin :       Univariate.age.BasicMeasures
 -------------
 
 Sortie ajoutée :
 -------------
 Nom :       TestsForLocation
 Libellé :      Tests de tendance centrale
 Modèle :   base.univariate.Location
 Chemin :       Univariate.age.TestsForLocation
 -------------
 
 Sortie ajoutée :
 -------------
 Nom :       Quantiles
 Libellé :      Quantiles
 Modèle :   base.univariate.Quantiles
 Chemin :       Univariate.age.Quantiles
 -------------
 
 Sortie ajoutée :
 -------------
 Nom :       ExtremeObs
 Libellé :      Observations extrêmes
 Modèle :   base.univariate.ExtObs
 Chemin :       Univariate.age.ExtremeObs
 -------------

Comme vous le voyez chaque tableau est désigné comme une sortie ajoutée. Pour chacune d'entre elles figurent le nom, le libellé, le modèle et le chemin. Nous nous contenterons pour notre part de relever le nom, puisque c'est cette information que nous donnerons a l'ods pour filtrer la ou les sorties qui nous intéressent.

Redirection des sorties

Comme précisé en préambule, l'ods a initialement été prévu pour diriger un rapport SAS vers une sortie spécifique (html, pdf, image, etc...). Les formats disponibles sont relativement nombreux, aussi il est conseillé d'aller faire un tour sur le site SAS. Un tableau de synthèse est notamment disponible.
Pour illustrer nos propos, nous allons rediriger la sortie de la proc univariate vers un fichier html :


ods html file="skate_park_univariate.html" path="/home/u49997643/gorenja";
proc univariate data=work.skate;
run;

Le code parle de lui-meme, c'est relativement simple, mais tellement pratique.


Retrouvez dans la rubrique "Nos datasets" toutes les données dont vous aurez besoin pour tester et pratiquer !