Personnaliser vos rapports avec SAS Enterprise Miner

SAS Enterprise Miner propose trois macros pour personnaliser vos rapports, les afficher dans la fenêtre des résultats et les sauvegarder en tant que fichiers HTML : %EM_REGISTER, %EM_REPORT et %ODSLISTON/OFF.

La commande ODS HTML permet de générer et de sauvegarder des sorties HTML. Cependant, cette commande n'affiche pas les résultats HTML dans la fenêtre des résultats de SAS Enterprise Miner.
Avec les trois macros suivantes, cela devient possible.

  • La macro %EM_REGISTER permet de sauvegarder les tables de sortie des nœuds afin de pouvoir les utiliser ensuite avec la macro %EM_REPORT pour générer des rapports.
  • La macro %EM_REPORT permet de générer des rapports et de les afficher dans la fenêtre des résultats.
  • La macro %EM_ODSLISTON/%EM_ODSLISTOFF permet d'afficher et de sauvegarder les sorties 'output' d'une procédure, au format HTML.

Nous nous baserons sur quelques exemples pour illustrer l'utilisation de ces macros dans un nœud SAS Code. Cet article fait référence à des macros variables propres à Enterprise Miner. La liste des macros variables et des macros programmes disponibles dans SAS Enterprise Miner est affichée dans le nœud SAS Code :

Dans cet article, les arguments suivis du caractère * sont obligatoires.

La macro %EM_REGISTER

Afin de pouvoir réutiliser une table, une sortie 'output' ou un graphique généré par une procédure ou un nœud Enterprise Miner, il est nécessaire d'exécuter cette macro. Celle-ci enregistre le type de l'objet (table, fichier, graphique…) et lui assigne un nom spécifique :

%EM_REGISTER(KEY=, TYPE=, EXTENSION=, FOLDER=);

Elle supporte les arguments suivants :
KEY*=
TYPE*= : CATALOG, DATA, FILE, FOLDER, ou GRAPH.
EXTENSION=
FOLDER= >nom du répertoire où sera sauvegardé le fichier>

La macro %EM_REPORT

Cette macro permet de générer des rapports visibles dans la fenêtre des résultats. Celle-ci affiche des tables de résultats, des histogrammes, des matrices de corrélation et bien d'autres types de rapports personnalisés.
Le type de rapport est à définir dans l'argument VIEWTYPE=.

Ci-dessous, une sélection d'arguments supportés par cette macro (la liste complète est disponible dans l'aide de SAS Enterprise Miner) :
KEY*=
VIEWTYPE*= : BAR, DATA, HISTOGRAM, LINEPLOT, PIE, PROFILEVIEW, SCATTER, GAINSPLOT, LATTICE. La valeur par défaut est DATA.
DESCRIPTION=
AUTODISPLAY = (Y/N) affiche le rapport automatiquement lorsque la fenêtre des résultats est ouverte. Par défaut, la valeur est N.
FREQ=
X=
Y=
XREF= : trace une ligne de référence pour les abscisses
YREF= < valeur numérique > : trace une ligne de référence pour les ordonnées
GROUP= : indique la variable de groupe à utiliser
BLOCK= : nom du menu de la fenêtre des résultats. Par défaut, la valeur est ' Custom Reports'.

La macro %EM_ODSLISTON/OFF

Cette macro est utilisée pour générer et sauvegarder des sorties ODS.

%EM_ODSLISTON (FILE=);
Active les sorties ODS (SAS Output Delivery System).

%EM_ODSLISTOFF;
Désactive les sorties ODS.

Exemples

Exemple 1 : Afficher un histogramme

         a- A partir d'une table du diagramme :
Supposons que vous souhaitez afficher l'histogramme de la variable BAD, contenue dans la table HMEQ gérée via la bibliothèque SAMPSIO:

Ouvrez la feuille de code et tapez la commande suivante :
%EM_REPORT(key=em_export_train ,viewtype=BAR, x=BAD);

- EM_EXPORT_TRAIN: macro variable référençant la table exportée au nœud précédent. Ici il s'agit de la table HMEQ
- VIEWTYPE=BAR : indique que l'on souhaite afficher un histogramme
- X=BAD : la variable d'analyse sera la variable BAD

Pour visualiser l'histogramme dans la fenêtre des résultats allez dans :

  • View (ou Affichage)
  • Custom Reports (ou Rapport personnalisé)
  • Em_export_train

Le nom du rapport ('em_export_train') peut être modifié en utilisant l'option DESCRIPTION= dans l'appel de la macro %EM_REPORT.

         b- A partir d'une table générée par du code
On souhaite maintenant créer une nouvelle table en utilisant du code SAS et générer un histogramme.

La première étape consiste à utiliser la macro %EM_REGISTER afin d'enregistrer la nouvelle table. Nous l'appellerons 'mydat'. La macro variable &EM_USER_mydat est alors générée, pour référencer cette table.
%EM_REGISTER(key=mydat, type=DATA);

/*- implémentation de la table &EM_USER_mydat :*/
data &EM_USER_mydat;
set sampsio.hmeq;
newvar=bad;
label newvar ='Ma variable binaire';
run;

/*- création du rapport. L'argument 'BLOCK=My Plots' personnalise le menu qui s'affiche dans la fenêtre de résultats :*/
%EM_REPORT(key=mydat, viewtype=BAR, Description=Target Plot, x=newvar, FREQ=COUNT, BLOCK=My Plots, GROUP=JOB);


Exemple 2 : Afficher une table SAS créée par une procédure


/*- enregistrement de la table qui sera créée par la procédure :*/
%EM_REGISTER(KEY=FREQ, TYPE=DATA);
proc freq data=&EM_IMPORT_DATA;
table bad*JOB / missing out=&EM_USER_FREQ;
run;

/*- création du rapport qui affichera une table grâce à l'argument VIEWTYPE=DATA :*/
%EM_REPORT(KEY=FREQ, VIEWTYPE=DATA, DESCRIPTION=%QUOTE(Data Table), AUTODISPLAY=Y);

Exemple 3 : Afficher les résultats d'une procédure au format HTML

/*- enregistrement de la sortie créée par la procédure. Cette sortie s'appellera ODSFILE, elle aura une extension HTML et sera sauvegardée dans le répertoire du nœud nommé ODS :*/
%EM_REGISTER(KEY=ODSFILE, TYPE=FILE, EXTENSION=HTM, FOLDER=ods);
%EM_ODSLISTON(FILE=&EM_USER_ODSFILE);

/*- afin de pouvoir ouvrir correctement le fichier HTML, la commande suivante est nécessaire (elle ne le sera plus dans la prochaine version de SAS Enterprise Miner).*/
ods html3 path="&EM_NODEDIR.&EM_DSEP.ODS"(url=NONE);
proc univariate data=sashelp.class;
var height;
run;
quit;
%EM_ODSLISTOFF;

%EM_REPORT(KEY=ODSFILE, VIEWTYPE=HTMLVIEW);

Exemple 4 : Personnaliser les sorties d'un nœud

La macro %EM_REPORT permet aussi de générer d'autres sorties ou d'afficher d'autres tables que celles proposées en sortie d'un nœud.
Par exemple, le nœud 'Composantes principales' génère plusieurs types de graphique, dont celui sur les composantes principales. Par défaut, le nœud affiche le graphique suivant :

Vous pouvez personnaliser ce graphique en affichant, par exemple, les valeurs négatives d'un côté de l'axe et les valeurs positives de l'autre. Le code suivant génère un tel graphique. Il s'exécute après un nœud 'Composantes Principales'.

%EM_REGISTER(KEY=PRIN, TYPE=data);
data &EM_USER_PRIN;
set EMWS.PRINCOMP_PRINCOEFFPLOT; /* il s'agit ici de la table générée par le nœud précédent (le nom de la table est à vérifier dans la fenêtre Journal)*/
run;
%EM_REPORT(ViewType=BAR, VIEW=2, Key=PRIN, X=Variable, Freq=PC_1);
%EM_REPORT(VIEW=2, Freq=_anynumeric_);

Exemple 5 : Générer une matrice de corrélation en utilisant les résultats d'une procédure CORR

%EM_REGISTER(KEY=CORR, TYPE=DATA);

proc corr data=&EM_IMPORT_DATA outp=_temp;
var %EM_INTERVAL_INPUT;
RUN;
data Y(rename=(_NAME_=_YNAME_));
set _temp;
Y = _N_;
keep Y _NAME_;
where _TYPE_='CORR';
run;
proc transpose data=_temp out=X prefix=CORR;
var %EM_INTERVAL_INPUT;
by _NAME_;
where _TYPE_='CORR';
run;
data X(rename=(_NAME_=_XNAME_));
retain X 0 Y 0;
set X;
if mod(_N_, &EM_NUM_INTERVAL_INPUT)=1 then do;
X = X+1;
Y = 0;
end;
Y = Y + 1;
run;
proc sort data=X;
by Y;
run;
data &EM_USER_CORR;
merge X Y;
by Y;
run;

%EM_REPORT(KEY=CORR, VIEWTYPE=HISTOGRAM, X=_XNAME_, Y=_YNAME_, FREQ=CORR1,DESCRIPTION=Pearson Correlations);

 SAS Enterprise Miner offre la possibilité avec ces différentes macros de personnaliser les sorties des nœuds et des procédures et de sauvegarder les résultats dans des fichiers HTML.
Vous retrouverez tous les arguments de ces 3 macros, dans l'aide de SAS Enterprise Miner :

  • SAS Code Node
  • Utility macros

Aurélie Gilbert
Consultant Support Clients - SAS France