Posts Tagged ‘libname’

Protégé : Créer un libname à partir d’un autre libname
janvier 18, 2010Publié dans Intructions globales, Par niveaux, Par thématique, SAS intermédiaire | Tagué bibliothèque, informatique, libname, programmation, SAS | Saisissez votre mot de passe pour accéder aux commentaires.

Les 2 dictionnaires SAS les plus utilisés: TABLES et COLUMNS
octobre 1, 2008Les données caractérisant un data set ou ses variables sont appelées des métadonnées. Les dictionnaires SAS stockent ce type d’information. Il s’agit ni plus ni moins que de tableaux contenant une ligne par data set ou une ligne par variable. Pour accéder aux dictionnaires, il faut passer par une PROC SQL et consulter les tableaux TABLES et COLUMNS de la bibliothèque DICTIONARY.
Note sur d’autres sources d’informations : Sachez, par ailleurs, qu’il existe d’autres moyens que la bibliothèque DICTIONARY pour accéder aux métadonnées.
- Reconstituées les data sets de référence avec des VIEWS : Les données peuvent être reconstituées à partir de vues (VIEWS) stockées dans la bibliothèque SASHELP. La procédure SQL ainsi que le data step peuvent s’en servir.
- Passer par une procédure : la procédure PROC DATASETS dispose de l’instruction CONTENTS syntaxe plus récente que le PROC CONTENTS.
La documentation SAS sur le sujet fait partie de Concepts : SQL Procedure.
1. Le dictionnaire décrivant les data sets : DICTIONARY.TABLES
Le dictionnaire TABLES contient une ligne par data set. Parmi les informations caractérisant un data set, celles qui me servent le plus souvent sont :
- La variable LIBNAME : le nom de la bibliothèque (library) sauvegardé dans la variable LIBNAME (library name)
- La variable MEMNAME : le nom du data set sauvegardé dans la variable MEMNAME. Entendez par là member name.
et de temps en temps
- La variable MEMTYPE : le type de fichier dans les dictionnaires TABLES et COLUMNS est soit DATA ou VIEW. DATA reste le type de fichier le plus fréquemment utilisé.
- La variable NOBS : le nombre d’observations dans le data set est sauvegardé dans la variable NOBS.
Liste de toutes les variables avec leur label :
- Library Name (libname)
- Member Name (memname)
- Member Type (memtype)
- Dataset Label (memlabel)
- Dataset Type (typemem)
- Date Created (crdate)
- Date Modified (modate)
- Number of Observations (nobs)
- Observation Length (obslen)
- Number of Variables (nvar)
- Password Protection (protected)
- Compression Routing (compress)
- Encryption (encrypt)
- Number of Pages (npage)
- Percent Compression (pcompress)
- Reuse Space (reuse)
- Bufsize (bufsize)
- Deleted Observations (delobs)
- Type of Indexes (indxtype)
- Data Representation (datarep)
- Requirements Vector (reqvector)
2. Le dictionnaire décrivant les variables : DICTIONARY.COLUMNS
Le dictionnaire COLUMNS contient une ligne par variable.
Les informations sur le fichier source : Comme précédemment, le nom du data set (MEMNAME) contenant la variable et sa bibliothèque (LIBNAME) sont des informations très importantes. Le MEMTYPE dest aussi fourni.
Le nom de la variable (NAME) : Le nom de la variable est sauvegardé dans la variable NAME. Les valeurs sont soient en minuscule, soit en majuscule, soit un mélange des deux.
Cela dépend de la manière dont le nom a été saisi la première fois lors de la création de la variable.
Les détails les plus usuels : je consulte le plus souvent le type de la variable : pour les variables texte, la variable TYPE prend la valeur « char » et pour les variables numériques, elle prend la valeur « num ». C’est différent de la sortie d’un PROC CONTENTS qui prend des valeurs numériques.
Les détails occasionnels : Après viennent par exemple :
- la longueur de la variable (LENGTH)
- le format de la variable (FORMAT)
- le label de la variable (LABEL)
- le numéro de la variable dans le data set (VARNUM)
Liste de toutes les variables dans DICTIONARY.COLUMNS avec leur label :
- Library Name (libname)
- Member Name (memname)
- Member Type (memtype)
- Column Name (name)
- Column Type (type)
- Column Length (length)
- Column Position (npos)
- Column Number in Table (varnum)
- Column Label (label)
- Column Format (format)
- Column Informat (informat)
- Column Index Twpe (idxusage)
3. Majuscule ou minuscule
Dans le dictionaire DICTIONARY.TABLES et dans le dictionnaire DICTIONARY.COLUMNS, le nom de la bibliothèque (LIBNAME) et le nom du data set (MEMNAME) sont sauvegardés en majuscule.
Le nom des variables varie dans un dictionnaire selon la première saisie faite du nom lors de sa création.
Pour éviter des erreurs, il est donc plus simple de faire des comparaisons après avoir mis les valeurs contenues dans les dictionnaires dans la même style : tout majuscule ou tout minuscule ou seul la première lettre en majuscule. Vous pouvez consulter l’article « Majuscule ou minuscule sous SAS« .
4. Deux exemples
Dans ce premier exemple tous les data sets SAS de la bibliothèque SASHELP sont listés.
proc sql;
select libname, memname
from dictionary.tables
where upcase(libname)=‘SASHELP’ and
upcase(memtype)=‘DATA’;
quit;
Dans ce second exemple, toutes les variables caractères du data set CLASS stocké dans la bibliothèque SASHELP sont affichées avec leur position.
proc sql;
select name, varnum
from dictionary.columns
where upcase(libname)=‘SASHELP’ and
upcase(memname)=‘CLASS’ and
upcase(type)=‘CHAR’;
quit;
5. Lister toutes les variables
Lister toutes les variables grâce au symbole étoile : La liste des variables contenues dans les dictionnaires TABLES and COLUMNS ici n’est pas exhaustive. Vous pouvez remplacer le nom des variables à garder par une étoile (*) afin de les voir toutes.
Afficher le nom des variables et non les labels en changeant l’option globale : Par défaut, le nom des variables n’apparaît pas dans l’OUTPUT mais le nom de leur label. Pour afficher le nom de la variable, il suffira de remplacer l’option globale label.
Afficher sur une ligne : Enfin, le nombre de variables contenues dans un dictionnaire peut ne pas s’afficher sur une seule ligne.
- Changer le nombre de caractères imprimables sur la page. Ce nombre varie entre 64 et 256.
- Donner une largueur d’affichage identique pour toutes les variables. L’option FLOW= de l’instruction PROC SQL limite le nombre de caractères disponibles pour l’affichage des variables.
options nolabel ls=255;
proc sql flow=10;
…
quit;
options label;
Pense-bête à télécharger : Il existe d’autres dictionnaires. Ils sont répertoriés dans le pense-bête de CodeCrafters Inc. : « Summary of SAS Dictionary Tables and Views« . Vous y trouverez également la liste des VIEWS.
Publié dans Advanced, Data Management, Les procédures, Métadonnées, Par Etapes, Par Niveau Certification, Par niveaux, Par thématique, proc sql, SAS débutant | Tagué columns, dictionary, dictionnaire, format, informatique, label, length, libname, Métadonnées, memname, memtype, metadata, NOBS, proc sql, programmation, SAS, tables, type, varnum | 3 Comments »

Et par magie mon jeu de données a disparu (LIBNAME)
mars 6, 2008Une des premières choses à comprendre en SAS est la notion de temporaire et permanent qui s’appliquent aux fichiers. Pour cela, il faut introduire la notion de bibliothèque (library). Ici, je vous propose plus particulièrement de voir les jeux de données SAS, communément appelés data sets.
Un data set c’est quoi ? Un data set SAS est un fichier SAS contenant un tableau. Chaque colonne a un nom et fait référence à une variable, chaque ligne correspond aux observations. Ce type de fichier est créé par SAS via un data set pour une procédure SQL.
Un nom de data set sans extension dans un programme SAS : un jeu de données a un nom pouvant suivant quelques règles de notation :
-
longueur de 32 caractères,
-
nom commençant par une lettre ou un trait bas,
-
caractères suivant pouvant aussi être des chiffres
Une extension (ex. : .sas7bdat) n’est visible que dans une arborescence comme Windows Explorer. Pour le nommer dans un programme, le nom sans l’extension est utilisé. Mais comment SAS sait-il où ce fichier est sauvegarder ?
1. Sauvegarde temporaire
Un répertoire vidé automatiquement : par défaut, SAS assumera que le data set est sauvegardé dans un répertoire défini lors de l’installation du logiciel. Ce répertoire est vidé à chaque fermeture du logiciel. Dans le cas d’un travail en mode batch (par opposition au mode interactif), ce répertoire est vidé à la fin de chaque soumission de programme.
Pour les curieux : si vous êtes curieux de savoir l’emplacement de votre répertoire temporaire, utilisez la procédure option. La réponse est située dans la fenêtre LOG de SAS. A priori cette information ne vous servira pas pour votre travail de programmation sauf cas exceptionnel (après plusieurs années de SAS, je n’en ai toujours pas eu besoin).
proc options option=work;
run;
WORK ? C’est le petit nom pour parler de ce répertoire au contenu temporaire : l’accès à ce répertoire a un petit nom ! WORK. Le mot WORK est optionnel : ainsi si on veut écrire dans un programme le nom d’un data set dans son intégralité, il suffira d’ajouter WORK avant le nom du jeu de donné et d’utiliser un point comme séparateur. Comme WORK est la valeur par défaut, un data set nommé DEMO et sauvegardé sous WORK sera référencé indifféremment DEMO ou WORK.DEMO. Lors de la fermeture du logiciel SAS, le fichier DEMO sera supprimé. C’est pour cela que l’on parle de fichier temporaire. Du coup, comment créer un data set qui puisse survivre à une session SAS ?
2. Des data sets qui survivent
Une ‘library’ fait référence à un espace de stockage : le répertoire temporaire, WORK, fait partie de la catégorie des bibliothèques. Et en anglais bibliothèque se traduit… ? library. Pour faire référence à un autre répertoire, qui lui ne sera pas vidé automatique par SAS, il faut de définir dans une instruction LIBNAME (LIB comme notre LIBRARY de tout à l’heure et NAME, donc nom de bibliothèque). Une convention similaire au nom de data set à part la longueur. Comme pour WORK, il faut donner un petit nom au chemin d’accès à ce répertoire. On parle de LIBREF.
-
8 caractères sont autorisés au maximum.
-
Comme un nom de data set, il commencera par une lettre ou un trait bas.
-
Pour les autres caractères les chiffres sont aussi valides.
Trois composants principaux pour l’instruction LIBNAME : l’instruction LIBNAME est composée du mot-clé LIBNAME, du petit nom et du chemin d’accès entre guillemets.
libname origin ‘C:\sasref\origine’;
libname propre ‘C:\sasref\propre’;
Désactiver une bibliothèque : par défaut, la bibliothèque sera valide jusqu’à la fin de la session en mode interactif. Pour désactiver la bibliothèque plus tôt, il suffit de la nommer sans préciser le chemin d’accès et en ajoutant clear. Si on veut les désassigner toutes, le nom de la bibliothèque sera remplacée par le mot-clé _all_ (SAS Online Doc: The Libname Statement Syntax for Relational Databases).
libname origin clear;
libname propre clear;
libname _all_ clear;
Consulter la vue SASHELP.VSLIB pour connaître les bibliothèques actives : les vues sont des fichiers contenant un code. Lors de la lecture de ce fichier, le code est soumis. Cela permet de retrouver en temps réel l’information, la dernière. On trouve notamment la vue VSLIB sauvegardés dans le répertoire permanent de SASHELP. Grâce à cette vue vous découvrirez également les autres bibliothèques créées lors de l’installation de SAS (MAP, SASHELP,SASUSER) qui ne sont pas vidées en fin de session et dans lesquelles on ne modifie rien, on lit seulement.
proc sql;
select *
from sashelp.vslib;
quit;
pour une liste des vues de SASHELP et des dictionnaires SAS, vous pouvez consulter la feuille résumée suivante : www.codecraftersinc.com/pdf/DictionaryTablesRefCard.pdf.
L’instruction LIBNAME a plusieurs options. Mais étant utilisés de manières sporadique pour des cas bien particulier, cela ne relève pas d’un article pour débutant en SAS.
Publié dans Base, Data Access, Intructions globales, Les procédures, Par Etapes, Par Niveau Certification, Par niveaux, Par thématique, proc options, proc sql, SAS débutant | Tagué assigner, bibliothèque, dictionary, dictionnaire, libname, library, libref, permanente, SAS, sashelp.vslib, supprimer, temporaire | 1 Comment »