Connectivité SAS : Maîtrisez l'instruction LIBNAME pour unifier vos sources de données

Ce code est également disponible en : Deutsch English Español
Niveau de difficulté
Débutant
Publié le :
Stéphanie

Le Conseil de l'Expert

Stéphanie
Spécialiste Machine Learning et IA.

Ne laissez jamais vos connexions ouvertes inutilement. Utilisez systématiquement LIBNAME libref CLEAR; à la fin de vos macros ou de vos programmes de flux. Cela libère les verrous sur les fichiers et nettoie les sessions actives sur les serveurs distants (WebDAV, SQL), optimisant ainsi les ressources de votre plateforme Viya.

Ce guide essentiel explore divers scénarios d'accès aux données dans l'environnement SAS© Viya. Il détaille l'utilisation de la déclaration LIBNAME pour associer un nom logique (libref) à un emplacement physique de bibliothèque, et montre comment des fonctions SAS© peuvent être utilisées pour cette même tâche, permettant une gestion programmatique. Les cas avancés incluent la concaténation de plusieurs bibliothèques SAS©, l'accès sécurisé à des bibliothèques sur des serveurs distants via SAS©/CONNECT, et l'intégration avec des serveurs WebDAV pour le partage de données. Une attention particulière est portée à l'intégration des systèmes de gestion de bases de données (DBMS) avec SAS©/ACCESS, y compris la création de vues SAS© à partir de tables DBMS, soulignant la flexibilité de SAS© pour travailler avec diverses sources de données. Enfin, il explique comment gérer dynamiquement les dossiers des bibliothèques et effacer les librefs pour optimiser les ressources.
Analyse des données

Type : CREATION_INTERNE


Les exemples utilisent des données générées (datalines) ou SASHELP, à l'exception des exemples d'accès à des sources externes (SAS/CONNECT, WebDAV, DBMS) pour lesquels des données simulées ou des placeholders sont utilisés.

1 Bloc de code
DATA STEP / PROC PRINT Data
Explication :
Cet exemple assigne le libref 'sales' à un chemin de bibliothèque spécifié. Il crée ensuite un jeu de données 'quarter1' dans cette bibliothèque à l'aide d'un DATA step, puis utilise PROC PRINT pour afficher le contenu du jeu de données. Le chemin de la bibliothèque doit exister et être accessible par le SAS Compute Server.
Copié !
1LIBNAME sales 'library-path';
2DATA sales.quarter1;
3 LENGTH mileage 4;
4 INPUT account mileage;
5 DATALINES;
61 932
72 563
8;
9PROC PRINT DATA=sales.quarter1;
10RUN;
2 Bloc de code
Macro / LIBNAME Function / LIBREF Function
Explication :
Ce macro-programme 'test' assigne dynamiquement un libref ('new') à un emplacement de répertoire ('library-location') à l'aide de la fonction LIBNAME. Il vérifie ensuite le succès de l'assignation avec la fonction LIBREF et affiche un message approprié. Les chemins doivent être valides et accessibles. Les fonctions sont préférables pour des assignations programmatiques.
Copié !
1%macro test;
2 %let mylibref=new;
3 %let mydirectory=library-location;
4 %IF %sysfunc(LIBNAME(&mylibref,&mydirectory)) %THEN
5 %put %sysfunc(sysmsg());
6 %ELSE %put success;
7 %IF %sysfunc(libref(&mylibref)) %THEN
8 %put %sysfunc(sysmsg());
9 %ELSE %put library &mylibref is assigned to &mydirectory;
10%mend test;
11 
12%test
3 Bloc de code
LIBNAME Statement
Explication :
Cette déclaration LIBNAME concatène deux bibliothèques SAS existantes, 'lib1' et 'lib2', sous le nouveau libref 'lib3'. Cela permet d'accéder aux données des deux bibliothèques en utilisant un seul libref. Lors de la recherche d'un jeu de données, les bibliothèques sont explorées dans l'ordre de leur liste. Si un jeu de données est créé, il est placé dans la première bibliothèque de la concaténation.
Copié !
1LIBNAME lib3 (lib1 lib2);
4 Bloc de code
LIBNAME Statement / PROC DATASETS
Explication :
Cet exemple illustre comment accéder à une bibliothèque SAS située sur un serveur distant via SAS/CONNECT. Il établit une connexion TCP/IP, se connecte au serveur distant ('myserver') avec des identifiants, puis assigne le libref 'reports' à un répertoire distant. PROC DATASETS est ensuite utilisé pour inspecter la bibliothèque distante. La session SAS/CONNECT est ensuite fermée.
Copié !
1options comamid=tcp;
2%let myserver=host.name.com;
3signon myserver.__1234 user=userid password='mypw';
4LIBNAME reports '/myremotedata' server=myserver.__1234;
5PROC DATASETS library=reports;
6RUN;
7QUIT;
8signoff myserver.__1234;
5 Bloc de code
LIBNAME Statement
Explication :
Cette déclaration LIBNAME assigne le libref 'davdata' à un répertoire sur un serveur WebDAV. L'option 'WEBDAV' est cruciale pour spécifier la méthode d'accès. Des identifiants (utilisateur et mot de passe) sont fournis pour l'authentification. SAS récupérera temporairement les fichiers sur le disque local pour traitement, puis les renverra au serveur après les modifications.
Copié !
1LIBNAME davdata v9 "https://www.webserver.com/datadir"
2webdav user="userid" pw="12345";
3 
6 Bloc de code
DATA STEP / PROC DATASETS Data
Explication :
Cet exemple assigne le libref 'mytddata' à une base de données Teradata, permettant l'accès aux tables comme à des jeux de données SAS. Un DATA step est utilisé pour créer une table 'grades' directement dans la base de données Teradata. PROC DATASETS est ensuite utilisé pour afficher les informations sur cette table. Il faut noter que les interfaces SAS/ACCESS ne supportent pas toujours l'option REPLACE= pour les tables DBMS.
Copié !
1LIBNAME mytddata teradata server=mytera user=myid password=mypw;
2DATA mytddata.grades;
3 INPUT student $ test1 test2 final;
4 DATALINES;
5Fred 66 80 70
6Wilma 97 91 98
7;
8PROC DATASETS library=mytddata;
9RUN;
10QUIT;
7 Bloc de code
DATA STEP / PROC PRINT / PROC DATASETS
Explication :
Cet exemple crée une vue SAS nommée 'highgrades' à partir d'une table Teradata existante ('mytddata.grades'). La vue sélectionne uniquement les enregistrements où la variable 'final' est supérieure à 80. PROC PRINT exécute cette vue, et PROC DATASETS montre que 'highgrades' est bien une vue SAS. Les librefs pour 'target' et 'mytddata' doivent être assignés avant de pouvoir utiliser cette vue.
Copié !
1LIBNAME target 'library-path';
2LIBNAME mytddata teradata server=mytera user=myid password=mypw;
3DATA target.highgrades / view=target.highgrades;
4 SET mytddata.grades;
5 where final gt 80;
6RUN;
7PROC PRINT DATA=target.highgrades;
8RUN;
9PROC DATASETS library=target;
10RUN;
11QUIT;
8 Bloc de code
OPTIONS statement / LIBNAME Statement
Explication :
Cet exemple montre comment créer automatiquement un sous-dossier pour une bibliothèque SAS si celui-ci n'existe pas. L'option système 'DLCREATEDIR' est activée, permettant à SAS de créer le dossier 'project' s'il est manquant dans le chemin spécifié '/home/userid/mydata/project' lors de l'assignation du libref 'mynewlib'.
Copié !
1options dlcreatedir;
2LIBNAME mynewlib '/home/userid/mydata/project';
3 
9 Bloc de code
LIBNAME Statement
Explication :
Cette déclaration LIBNAME désassigne le libref 'mylib' de son emplacement physique. C'est utile pour libérer des ressources ou modifier l'assignation d'un libref. Pour désassigner tous les librefs (sauf les bibliothèques système), on peut utiliser 'libname _all_ clear;'.
Copié !
1LIBNAME mylib clear;
L'Astuce Pro
Pour optimiser la gestion dynamique de vos bibliothèques dans des macros, utilisez la fonction %sysfunc(libname()) qui retourne une valeur numérique (0 pour succès), ce qui vous permet de valider l existence du chemin physique ou la validité des identifiants de connexion avant de lancer des traitements dépendants, évitant ainsi des erreurs d exécution en cascade si le serveur distant ou le répertoire est inaccessible.
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.
Informations de Copyright : Copyright © SAS Institute Inc. All Rights Reserved