Publié le :
Reporting SASHELP

Rapport Iris Dataset avec ODS et Tableaux Triables

Ce script SAS© utilise ODS (Output Delivery System) pour générer un rapport HTML du jeu de données 'iris' contenu dans SASHELP. Le code inclut une macro pour intégrer des scripts JavaScript externes (via des CDN) permettant de trier les colonnes des tableaux et de leur appliquer un style 'zebra'. Le rapport est structuré par espèce ('Species'). Pour chaque espèce, une image correspondante est insérée, suivie d'un tableau affichant les dimensions des sépales et pétales. La sortie inclut également des notes sur la triabilité et des informations de copyright issues des variables système SAS©. Le script utilise un 'DATA _NULL_' pour contrôler la création du rapport ODS, en ajoutant des titres, des en-têtes de tableau, des données et des pieds de page dynamiquement en fonction des groupes ('first.Species', 'last.Species'). Les chemins d'accès aux images et au fichier de sortie HTML sont spécifiés dans le code.
Analyse des données

Type : SASHELP


Le script utilise le jeu de données intégré 'iris' disponible dans la librairie SASHELP, qui contient des mesures de différentes variétés d'iris.

1 Bloc de code
MACRO
Explication :
Définit une macro nommée 'ods_html_sort_table'. Cette macro inclut deux scripts JavaScript externes et une initialisation jQuery. L'objectif est d'appliquer la librairie 'tablesorter' aux tableaux HTML générés par ODS, leur conférant ainsi des fonctionnalités de tri interactif et un style visuel avec l'effet zèbre.
Copié !
1%macro ods_html_sort_table;
2
3
4
5%mend;
6 
2 Bloc de code
ODS / DATA STEP
Explication :
Configure la sortie ODS pour générer un fichier HTML interactif nommé 'a:\test\iris.html', en appliquant un style 'sasweb' et en incluant la macro pour les tableaux triables. Le script utilise ensuite un `DATA _NULL_` pour lire le jeu de données `sashelp.iris` et le traiter par groupe d'espèce (`Species`). Il utilise la classe ODS Report Writing (`odsout`) pour construire dynamiquement le rapport : ajout d'une image spécifique pour chaque espèce, d'un titre, d'un tableau de statistiques de base, et d'un tableau avec les mesures des sépales et pétales. Le traitement avec `first.Species` et `last.Species` permet de gérer les en-têtes de tableau, les notes et les pieds de page. Finalement, la sortie HTML est fermée et le système ODS revient au mode 'listing' par défaut.
Copié !
1title ;
2odslisting close;
3odsh tml file="a:\test\iris.html" style=sasweb headtext="%ods_html_sort_table";
4 
5DATA _null_;
6 SET sashelp.iris;
7 BY Species;
8
9/* create an object, obj, based on the ODS Report Writing class, odsout*/
10 IF _n_ = 1 THEN DO;
11 dcl odsout obj();
12 END;
13 
14 IF (first.Species) THEN DO; /*by group processing*/
15 obj.title(text: "Fisher's Iris DATA SET BY Species"); /*title*/
16 
17/* start a table*/
18 obj.table_start();
19 obj.row_start();
20 if (Species = "Setosa") then
21 obj.image(file: "Iris_setosa.jpg" );*insert image;
22 else if (Species = "Versicolor") then
23 obj.image(file: "Iris_versicolor.jpg" );
24 else if (Species = "Virginica") then
25 obj.image(file: "Iris_virginica.jpg" );
26 obj.row_end();
27 
28 obj.row_start();
29 obj.format_cell(text: "Iris Species", overrides: "fontweight=bold just=right" );
30 obj.format_cell(text: Species, column_span: 3, overrides: "just=left");
31 obj.row_end();
32 
33 obj.row_start();
34 obj.format_cell(text: "Unit", overrides: "fontweight=bold just=right" );
35 obj.format_cell(text: "(mm)", column_span: 3, overrides: "just=left");
36 obj.row_end();
37 obj.table_end();
38 
39 /* start another table */
40 obj.table_start();
41 obj.head_start();
42 obj.row_start();
43 obj.format_cell(text: "Sepal LENGTH" , overrides: "fontweight=bold");
44 obj.format_cell(text: "Sepal Width" , overrides: "fontweight=bold");
45 obj.format_cell(text: "Petal LENGTH" , overrides: "fontweight=bold");
46 obj.format_cell(text: "Petal Width" , overrides: "fontweight=bold");
47 obj.row_end();
48 obj.head_end();
49 end;
50 
51 obj.row_start();
52 obj.format_cell(data: SepalLength);
53 obj.format_cell(data: SepalWidth);
54 obj.format_cell(data: PetalWidth);
55 obj.format_cell(data: SepalLength);
56 obj.row_end();
57 
58 if (last.Species) then do;
59 obj.table_end();
60 
61 obj.note(data: "Note: These Tables are Sortable."); /*note*/
62 
63 obj.foot_start(); /*footer*/
64 obj.row_start();
65 obj.cell_start();
66 obj.format_text(data: "Footer: DATA from SAS V&sysver at &sysscp &sysscpl Sashelp.iris",just:"C");
67 obj.cell_end();
68 obj.row_end();
69 obj.foot_end();
70 
71 obj.page();
72 END;
73RUN;
74 
75odsh tml close;
76odslisting;
77 
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« Lorsque vous utilisez des ressources externes (JavaScript via CDN ou images locales), assurez-vous que les chemins sont relatifs ou accessibles pour vos utilisateurs finaux. Si vous déployez ce rapport sur un serveur d'entreprise, vérifiez que le dossier a:\test\ est correctement mappé pour que les images s'affichent chez tout le monde. »