Dans nos épisodes précédents, nous avons vu comment aspirer toutes sortes de données dans SAS et comment les mettre à l'abri dans une bibliothèque permanente. C'est parfait pour vous, l'analyste. Mais que se passe-t-il lorsque votre comptable, qui ne jure que par ses tableaux croisés dynamiques, vous réclame le chiffre d'affaires de la boulangerie ? Vous n'allez tout de même pas lui envoyer un fichier .sas7bdat !
Il est temps d'apprendre à faire le chemin inverse : extraire vos précieuses tables SAS pour les offrir au monde extérieur. Pour cela, nous avons deux grandes écoles : la méthode "Presse-Bouton" avec PROC EXPORT, et la méthode "Artisanale" avec l'étape DATA _NULL_ et l'instruction PUT.
1. La méthode rapide : PROC EXPORT (Le miroir de PROC IMPORT)
Si vous avez survécu à l'article sur PROC IMPORT, vous allez adorer PROC EXPORT. C'est exactement la même logique, mais à l'envers. Cette procédure est idéale pour générer rapidement des fichiers Excel, des CSV ou des bases Access.
Imaginons que nous voulons envoyer la table de notre chiffre d'affaires (créée dans l'article précédent) à notre cher comptable.
SAS
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Objectif : Exporter les données pour la comptabilité */
* On n'oublie pas de déclarer notre bibliothèque si on vient d'ouvrir SAS ;
LIBNAME mabase "C:\Boulangerie\Donnees";
* 1. Exportation vers un fichier Excel flambant neuf ;
PROC EXPORT
DATA = mabase.ca_annuel
OUTFILE = "C:\Boulangerie\Exports\Bilan_Ventes.xlsx"
DBMS = EXCEL
REPLACE;
SHEET = "Analyse_CA";
RUN;
* 2. Exportation vers un fichier texte délimité (CSV) ;
PROC EXPORT
DATA = mabase.ca_annuel
OUTFILE = "C:\Boulangerie\Exports\Bilan_Ventes.csv"
DBMS = CSV
REPLACE;
RUN;
Décryptage express :
DATA =: La table SAS que vous voulez expulser.OUTFILE =: Le chemin complet et le nom du futur fichier sur votre disque dur.DBMS =: Le type de fichier à générer (EXCEL, CSV, DLM, ACCESS...).REPLACE: L'option magique qui permet d'écraser le fichier s'il existe déjà, évitant ainsi de bloquer votre programme lors des relances.
2. La méthode artisanale : L'instruction PUT et DATA NULL
PROC EXPORT est fantastique, mais elle produit des fichiers très "carrés" : une ligne d'en-tête, puis les données brutes. Que faire si vous voulez générer un fichier texte complètement sur-mesure, comme une lettre, une facture ou un rapport formaté ? C'est là qu'intervient le combo DATA _NULL_ et PUT.
Le mystère du DATA NULL
Jusqu'à présent, toutes nos étapes DATA créaient une nouvelle table SAS (ex: DATA ma_table;). Mais parfois, on veut juste lire des données pour les imprimer dans un fichier externe, sans encombrer notre disque avec une copie inutile. C'est à cela que sert DATA _NULL_ : il dit à SAS "Lis les données, fais tes calculs, mais ne crée aucune table à la fin".
Les instructions FILE et PUT
FILEindique à SAS où créer le fichier texte.PUTdicte exactement ce qui doit être écrit, ligne par ligne.
Voyons comment générer un rapport narratif pour le chef boulanger :
SAS
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
DATA _NULL_;
* On lit notre table de données ;
SET mabase.ca_annuel;
* On définit le fichier de destination ;
FILE "C:\Boulangerie\Exports\Rapport_Chef_Boulanger.txt";
* L'astuce _N_ : _N_ est une variable automatique de SAS qui compte le nombre de boucles.
* Si c'est la première ligne (_N_ = 1), on écrit un joli en-tête ! ;
IF _N_ = 1 THEN DO;
PUT "==========================================";
PUT " RAPPORT MENSUEL DE LA BOULANGERIE";
PUT "==========================================";
PUT " "; /* Ligne vide pour aérer */
END;
* On écrit notre phrase personnalisée en mélangeant du texte pur et nos variables ;
PUT "Pour le mois de " mois ", nous avons encaissé " chiffre_affaires_euros " euros.";
RUN;
Le résultat dans votre fichier .txt ressemblera à ceci :
Plaintext
2
3
4
5
6
7
8
RAPPORT MENSUEL DE LA BOULANGERIE
==========================================
Pour le mois de Janvier , nous avons encaissé 15200 euros.
Pour le mois de Fevrier , nous avons encaissé 14800 euros.
Pour le mois de Mars , nous avons encaissé 16500 euros.
Pour le mois de Avril , nous avons encaissé 17000 euros.
💡 L'astuce du pro : Gérer les espaces disgracieux
Vous avez remarqué les grands espaces après les noms des mois dans le rapport texte ci-dessus ? C'est parce que la variable mois était formatée sur 10 caractères lors de sa création. SAS remplit les blancs ! Pour nettoyer cela, vous pouvez utiliser la fonction STRIP() dans votre PUT :PUT "Pour le mois de " mois $STRIP. ", nous avons..." (une technique un peu plus avancée que nous garderons sous le coude pour un futur article sur les fonctions de caractères).
Maintenant que nous savons entrer et sortir des données de SAS, les choses sérieuses vont pouvoir commencer. Dans le prochain article, nous allons jouer aux apprentis sorciers en fusionnant plusieurs tables ensemble avec les redoutables instructions SET et MERGE !






