Tables SAS temporaires vs permanentes : le pouvoir de l'instruction LIBNAME

Tout développeur SAS a, un jour ou l'autre, connu ce grand moment de solitude : vous avez passé l'après-midi à importer, nettoyer, fusionner et formater les données de votre entreprise. Votre table finale est magnifique. Vous êtes fier de vous. Vous fermez SAS pour aller prendre un café bien mérité. Le lendemain matin, vous rouvrez le logiciel pour faire vos statistiques et là... plus rien. Le vide intersidéral. Votre table parfaite s'est évaporée dans les limbes de la mémoireGemini said
Espace de stockage temporaire (RAM) utilisé par le moteur CAS pour charger et traiter les données à haute vitesse, minimisant les accès disque pour optimiser les performances de SAS Viya.
RAM de votre ordinateur.

Félicitations, vous venez de découvrir la notion de "bibliothèque temporaire" ! Rassurez-vous, c'est une erreur que l'on ne fait généralement qu'une seule fois. Aujourd'hui, nous allons voir comment sauver votre travail de l'oubli grâce à la sacro-sainte instruction LIBNAME.

1. Le trou noir par défaut : La bibliothèque WORK

Dans SAS, tous les jeux de données (les "tables") sont stockés dans ce qu'on appelle des BibliothèquesPointeurs logiques (Libref) reliant SAS Viya à des sources de données physiques (dossiers, bases de données, CAS) pour lire, écrire et organiser les tables de manière structurée. (Libraries).

Si vous créez une table avec l'instruction DATA table_ventes; sans rien préciser d'autre, SAS la place automatiquement dans une bibliothèque par défaut nommée WORK. Son nom complet caché est en réalité WORK.table_ventes.

Le problème ? La bibliothèque WORK est un espace de travail strictement temporaire. Dès que vous fermez la sessionInstance de connexion active entre un client et le serveur CAS (Cloud Analytic Services), isolant les ressources, les bibliothèques et les traitements d'un utilisateur au sein de SAS Viya. SAS, le logiciel fait le ménage et supprime physiquement tout ce qui s'y trouve. C'est génial pour ne pas saturer votre disque dur avec des tables intermédiaires inutiles, mais c'est dramatique pour vos résultats finaux.

2. L'instruction LIBNAME : Créer un pont vers votre disque dur

Pour conserver vos données d'une sessionInstance de connexion active entre un client et le serveur CAS (Cloud Analytic Services), isolant les ressources, les bibliothèques et les traitements d'un utilisateur au sein de SAS Viya. à l'autre, vous devez dire à SAS d'enregistrer la table directement dans un vrai dossier sur votre ordinateur (ou sur un serveur). Pour cela, on crée une bibliothèque permanente avec l'instruction LIBNAME

L'instruction a besoin de deux choses :

  1. Un nom (Libref) : Limité à 8 caractères maximum, commençant par une lettre. C'est le raccourci que vous utiliserez dans votre code.
  2. Un chemin d'accès : L'adresse physique du dossier sur votre ordinateur, entre guillemets.

Continuons avec notre boulangerie. Nous voulons sauvegarder notre chiffre d'affaires.

SAS


1
2
3
4
5
6
7
8
/* Auteur : Nicolas Housset
Objectif : Créer une bibliothèque permanente pour la boulangerie */


* 1. Déclaration de la bibliothèque (à mettre au tout début de votre programme) ;
* "mabase" est notre raccourci pour le dossier "C:\Boulangerie\Donnees" ;
LIBNAME mabase "C:\Boulangerie\Donnees";

* Vérification dans la Log : SAS doit vous répondre que la libref a été assignée avec succès ! ;

3. Écrire et lire dans une bibliothèque permanente

Maintenant que le pont est créé, il suffit d'ajouter le nom de votre bibliothèque comme préfixe, suivi d'un point, devant le nom de votre table.

SAS comprendra la syntaxe nom_bibliotheque.nom_table.

SAS


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
* 2. Création d'une table PERMANENTE ;
* Au lieu de "
DATA ca_annuel;", on précise la destination : ;
DATA mabase.ca_annuel;
INPUT mois $1-10 chiffre_affaires_euros;

* On ajoute une petite taxe fictive pour l'
exemple ;
ca_net = chiffre_affaires_euros * 0.80;

DATALINES;
Janvier 15200
Fevrier 14800
Mars 16500
Avril 17000
;
RUN;

Si vous allez fouiller dans votre dossier Windows C:\Boulangerie\Donnees, vous y verrez un nouveau fichier apparaitre : ca_annuel.sas7bdat. C'est l'extension propriétaire des tables SAS. Vos données sont désormais sauvées à tout jamais (ou du moins jusqu'à ce que votre disque dur rende l'âme).

4. Rappeler vos données le lendemain

Le lendemain, après avoir redémarré votre ordinateur, votre table mabase.ca_annuel est toujours là. Pour vous en servir, vous n'avez pas besoin de la recréer avec DATALINES. Il suffit de resoumettre votre instruction LIBNAME pour réactiver le pont, puis de l'appeler directement dans vos procédures !

SAS


1
2
3
4
5
6
7
8
9
10
/* Session du lendemain matin */

* On réactive le lien vers notre dossier ;
LIBNAME mabase "C:\Boulangerie\Donnees";

* On lance une analyse directement sur la table sauvegardée hier ;
PROC MEANS DATA = mabase.ca_annuel SUM MEAN MIN MAX;
VAR chiffre_affaires_euros ca_net;
TITLE "Analyse des ventes de la Boulangerie";
RUN;

💡 L'astuce du pro : Le mix Temporaire / Permanent Dans un vrai projet de développement SAS, la bonne pratique est d'utiliser la bibliothèque WORK pour toutes vos étapes de traitement intermédiaires (les tris, les fusions brouillonnes, les tests). Cela évite d'encombrer votre serveur. Vous n'utiliserez le préfixe mabase. qu'à la toute dernière étape DATA, uniquement pour stocker la table finale propre et validée !

Maintenant que vos données sont bien au chaud sur votre disque dur, nous pourrons voir dans le prochain article comment faire le chemin inverse : exporter nos belles tables SAS toutes propres pour les envoyer à notre comptable sous format Excel ou Texte. À très vite !

Nicolas Housset

Passionné d'informatique, je suis Consultant et expert technique SAS VIYA, également co-fondateur de la société Flexcelite. Spécialisé dans les technologies SAS (Viya, 9.4) et les infrastructures associées (Linux, Hadoop, Azure), ce blog est mon espace pour partager mes mémos techniques et retours d'expérience.