Publié le :
Reporting SASHELP

Rapport des ventes avec mise en forme conditionnelle

Le script commence par définir plusieurs formats personnalisés (`cfore`, `cback`, `fchair`, `bchair`, `fdesk`, `bdesk`, `ftable`, `btable`, `ftotal`, `btotal`) qui associent des plages de valeurs numériques à des noms de couleurs. Ces formats seront utilisés pour la stylisation. Il ferme ensuite la destination ODS LISTING et ouvre une destination ODS HTML, spécifiant un chemin de sortie via la variable macro `&path` et un nom de fichier `ch8_4_5.html`. La procédure principale est `PROC REPORT`, qui utilise le jeu de données `sashelp.prdsale` en filtrant les enregistrements où `prodtype` est 'OFFICE'. Le rapport affiche les colonnes `region`, `country`, `product`, `actual` (somme des ventes réelles) et `totalsales` (une variable calculée). `region` et `country` sont des variables de regroupement, et `product` est une variable 'across', créant des colonnes distinctes pour chaque produit. Des ruptures de niveau sont définies après `region` et à la fin du rapport pour afficher des résumés. Des blocs `compute` sont utilisés pour les colonnes `actual` et `totalsales`. Dans le bloc `compute actual`, un style conditionnel est appliqué aux colonnes `_C3_`, `_C4_`, `_C5_` (correspondant aux ventes `actual` pour différents produits), utilisant les formats `fchair`, `bchair`, `fdesk`, `bdesk`, `ftable`, `btable`. Dans le bloc `compute totalsales`, la somme des ventes est calculée, et un style conditionnel est appliqué à la colonne de total en utilisant les formats `btotal` et `ftotal`. Enfin, la destination ODS HTML est fermée.
Analyse des données

Type : SASHELP


Le script utilise le jeu de données `prdsale` de la bibliothèque SASHELP. Ce jeu de données est natif à SAS et contient des informations de ventes.

1 Bloc de code
PROC FORMAT
Explication :
Ce bloc définit plusieurs formats numériques personnalisés. Chaque format associe des plages de valeurs à des chaînes de caractères représentant des couleurs (ex: 'white', 'black', 'red', 'yellow', 'green'). Ces formats sont destinés à être utilisés ultérieurement dans les options de style ODS pour la mise en forme conditionnelle des cellules ou des totaux du rapport. Par exemple, `cfore` et `cback` sont des formats pour la couleur du texte (`foreground`) et du fond (`background`) respectivement, appliqués aux lignes de résumé.
Copié !
1PROC FORMAT;
2 value cfore
3 low - 21000 = 'white'
4 21000< - 25000 = 'black'
5 75000 - high = 'white';
6 value cback
7 low - 21000 = 'red'
8 21000< - 25000 = 'yellow'
9 75000 - high = 'green';
10 value fchair
11 low - 23500 = 'white';
12 value bchair
13 low - 23500 = 'red';
14 value fdesk
15 low - 25000 = 'white';
16 value bdesk
17 low - 25000 = 'red';
18 value ftable
19 low - 21000 = 'white';
20 value btable
21 low - 21000 = 'red';
22 value ftotal
23 low - 72000 = 'white';
24 value btotal
25 low - 72000 = 'red';
26 RUN;
2 Bloc de code
PROC REPORT
Explication :
Ce bloc gère la génération du rapport et son export. Il commence par configurer ODS pour générer un fichier HTML. La `PROC REPORT` est utilisée pour créer un tableau croisé dynamique à partir de `sashelp.prdsale`, filtré pour `prodtype='OFFICE'`. Les colonnes `region` et `country` sont des variables de regroupement, et `product` est une variable d'en-tête de colonne ('across'). La variable `actual` est agrégée par somme et formatée en monnaie. Une variable calculée `totalsales` est définie pour sommer les ventes. Les options `break after` et `rbreak after` génèrent des lignes de résumé pour chaque région et un total général. Les blocs `compute` appliquent des styles dynamiques aux cellules du rapport. Pour la colonne `actual`, des styles de couleur sont appliqués aux colonnes `_C3_`, `_C4_`, `_C5_` (qui correspondent aux instances de la variable `actual` pour les différents produits). Pour la colonne `totalsales`, le calcul de la somme est effectué, puis un style est appliqué à la colonne de total elle-même, en utilisant les formats de couleur `btotal` et `ftotal` définis précédemment. Enfin, la destination ODS HTML est fermée, terminant la génération du fichier `ch8_4_5.html`.
Copié !
1ods listing close;
2ods html style=default
3 path="&pathesults"
4 body='ch8_4_5.html';
5 
6title1;
7PROC REPORT DATA=sashelp.prdsale(where=(prodtype='OFFICE'))
8 nowd
9 style(summary)={background=cback.
10 foreground=cfore.};
11 column region country product,actual totalsales;
12 define region / group;
13 define country / group;
14 define product / across;
15 define actual / analysis sum
16 FORMAT=dollar8.
17 'Sales';
18 
19 define totalsales / computed FORMAT=dollar10.
20 'Total Sales';
21 
22
23 break after region / summarize suppress;
24 rbreak after / summarize;
25 
26 compute actual;
27 IF _break_ = ' ' THEN DO;
28 call define('_C3_','style','style={background=bchair.
29 foreground=fchair.}');
30 call define('_C4_','style','style={background=bdesk.
31 foreground=fdesk.}');
32 call define('_C5_','style','style={background=btable.
33 foreground=ftable.}');
34 END;
35 endcomp;
36 
37 compute totalsales;
38 totalsales = sum(_c3_, _c4_, _c5_);
39 IF _break_ = ' ' THEN DO;
40 call define(_COL_,'style', 'style={background=btotal.
41 foreground=ftotal.}');
42 END;
43 endcomp;
44 RUN;
45ods html close;
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.
« L'utilisation de l'option nowd (No Windows) et de la destination ODS HTML est la norme pour l'automatisation en production. Pour aller plus loin, vous pourriez remplacer l'adressage statique (_C3_, _C4_) par une boucle dynamique si le nombre de produits venait à évoluer, rendant votre code encore plus robuste face aux changements de données. »