Bibliothèque permanente#

Comme nous avons vu dans le chapitre précédent, SAS a besoin d’importer les données de n’importe quel format afin que l’utilisateur puisse appliquer les analyses souhaitées. Toutesfois, afin d’être plus productif, il est plus simple de conserver ces données quelque part où nous ne sommes pas obligés de refaire cette opération d’importation d’un jeu de données à chaque fois que nous en avons besoin. Surtout lorsque nous y effectuons des changements tels que des ajouts de variables ou des calculs qui prennent du temps à exécuter.

SAS nous permet de sauvegarder ces données dans ce qu’on appelle une bibliothèque ou (library)

Mais d’abord, rappelons-nous comment les données ont organisés dans SAS. Ci-dessous, un parallèle avec ce que nous sommes habitués de voir avec des tableurs tel qu’Excel de Microsoft ou Calc de LibreOffice;

Excel (ou autre)SAS
feuilledata set
colonnevariable
ligneobservation

Lorsqu’on créait un jeu de données avec la procédure data comme suit;

filename mesDos 'data/emprunt_bancaire.csv';
data loan;
    infile mesDos dsd
     firstobs=2;
    input Loan_ID $ loan_status $ Principal terms age education $ Gender $;
run;

En réalité, SAS sauvegarde les données sous le format work.loan, le work qui précède loan est le nom de la bibliothèque (library reference) temporaire que SAS crée par défaut. SAS y insère tous les jeux de données si l’utilisateur n’en définit pas une.

D’ailleurs, dans tous les exemples que nous avons réalisés jusqu’à présent, nous avons créé des jeux de données dans une bibliothèque temporaire nommée WORK. Vous pouvez le vérifier en affichant les données comme suit:

proc print data=work.loan noobs;
run;
SAS Output

The SAS System

Loan_ID loan_status Principal terms age education Gender
xqd20166 PAIDOFF 1000 30 45 High Sch male
xqd20168 PAIDOFF 500 30 50 Bechalor female
xqd20160 PAIDOFF 1000 30 33 Bechalor female
xqd20160 PAIDOFF 895 15 27 college male
xqd20160 PAIDOFF 1000 30 28 college female

Remarquez qu’ici nous ajoutons work. même si nous ne le précisons pas à la création du jeu de données.

Comment créer une bibliothèque permanente?#

Nous créons une bibliothèque en donnant simplement le nom de cette dernière dans la commande LIBNAME et de spécifier dans quel répertoire nous voulons la stocker.

La longueur du nom de la bibliothèque ne doit pas dépasser 8 caractères et doit respecter les règles de validation de SAS (caractères spéciaux …etc.)

Allons-y avec un exemple où je veux créer une bibliothèque permanente appelée act3035 dans le répertoire data. Dans cet exemple, j’aurais pu mettre ma bibliothèque permanente dans un autre répertoire qui serait repertoire/sous_repertoire/data

libname act3035 'data'; /* repertoire/sous_repertoire/data */
data act3035.notes_examens;
infile datalines dsd;
    length code_perm $ 50;
    input code_perm $ examen1-examen3;
    datalines;
    "Diane Rossi",67,68,70
    "Stéphanie de la Gonzalez",72,81,87
    "Thierry Lacroix",73,87,86
    "Jérôme Blanc-Moreno",73,66,77
    "Danielle Le Guyon",81,73,84
    "Alfred Adam",73,79,82
    "Chantal Mahe",75,77,69
    "Eugène Dupont",81,80,83
    "Bertrand Pages Le Didier",86,77,75
    "Guy Gillet de la Valette",78,69,80
    ;
proc print data=act3035.notes_examens nobs;
run;
SAS Output

The SAS System

code_perm examen1 examen2 examen3
Diane Rossi 67 68 70
Stéphanie de la Gonzalez 72 81 87
Thierry Lacroix 73 87 86
Jérôme Blanc-Moreno 73 66 77
Danielle Le Guyon 81 73 84
Alfred Adam 73 79 82
Chantal Mahe 75 77 69
Eugène Dupont 81 80 83
Bertrand Pages Le Didier 86 77 75
Guy Gillet de la Valette 78 69 80

Comme expliqué en classe, un des avantages de prendre l’habitude de travailler avec des bibliothèques permanentes, est de ne pas refaire le travaille de ETL (extraire les données, les transformer et les importer).

En plus, si nous avons un (ou plusieurs) petit ensemble de données, ce n’est pas très pénalisant de travailler avec les bibliothèques temporaires, et nous pouvons aisément nous en sortir avec la taille de la mémoire de nos ordinateurs. Toutefois, dès que nous avons des bases de données plus importantes, comme c’est le cas en pratique, il est très pertinent de créer des bibliothèques permanentes et d’y stocker nos ensembles de données.

Description de la bibliothèque#

Nous pouvons voir la description des bibliothèques permanentes que nous avons créées avec la commande PROC CONTENTS.

proc contents data=act3035.notes_examens;
run;
SAS Output

Listing All the SAS Data Sets in a Library

The CONTENTS Procedure

Data Set Name ACT3035.NOTES_EXAMENS Observations 10
Member Type DATA Variables 4
Engine V9 Indexes 0
Created 09/09/2017 18:40:49 Observation Length 80
Last Modified 09/09/2017 18:40:49 Deleted Observations 0
Protection   Compressed NO
Data Set Type   Sorted NO
Label      
Data Representation SOLARIS_X86_64, LINUX_X86_64, ALPHA_TRU64, LINUX_IA64    
Encoding utf-8 Unicode (UTF-8)    
Engine/Host Dependent Information
Data Set Page Size 65536
Number of Data Set Pages 1
First Data Page 1
Max Obs per Page 817
Obs in First Data Page 10
Number of Data Set Repairs 0
Filename /mnt/hgfs/myfolders/cody/librairies/notes_examens.sas7bdat
Release Created 9.0401M4
Host Created Linux
Inode Number 2221
Access Permission rwxrwx---
Owner Name root
File Size 128KB
File Size (bytes) 131072
Alphabetic List of Variables and Attributes
# Variable Type Len
1 code_perm Char 50
2 examen1 Num 8
3 examen2 Num 8
4 examen3 Num 8

Nous pouvons aussi faire une description de tous les ensembles de données avec l’option _ALL_ contenus dans une bibliothèque

title "Listing All the SAS Data Sets in a Library";
proc contents data=act3035._all_ nods;
run;
SAS Output

Listing All the SAS Data Sets in a Library

The CONTENTS Procedure

Directory
Libref ACT3035
Engine V9
Physical Name /mnt/hgfs/myfolders/data
Filename /mnt/hgfs/myfolders/data
Inode Number 557
Access Permission rwxrwx---
Owner Name root
File Size 1KB
File Size (bytes) 576
# Name Member Type File Size Last Modified
1 NOTES_EXAMENS DATA 128KB 01/16/2018 20:32:37

Références#

Guide, A. Programmer’S. « Learning SAS® by Example. »