Publié le :
Accès aux Données CREATION_INTERNE

Accéder aux Données via un Libref

Ce code est également disponible en : Deutsch English Español
En attente de validation
Cette documentation explore les concepts fondamentaux de la gestion des bibliothèques SAS© et l'accès aux données. Chaque section présente un scénario spécifique avec le code SAS© correspondant, des explications détaillées et des points clés à retenir. L'accent est mis sur la compatibilité avec SAS© Viya 4 et SAS© Studio, en garantissant que le code est autonome et directement exécutable.
Analyse des données

Type : CREATION_INTERNE


Les exemples utilisent des données générées (datalines) ou SASHELP.

1 Bloc de code
LIBNAME, DATA STEP, PROC PRINT Data
Explication :
L'instruction LIBNAME assigne le libref sales à l'emplacement d'une bibliothèque. Substituez l'emplacement de votre bibliothèque par library-path. L'emplacement doit déjà exister et être accessible par le SAS Compute Server. L'étape DATA crée l'ensemble de données sales.quarter1 et le stocke dans l'emplacement physique de la bibliothèque. L'étape PROC PRINT fait référence à l'ensemble de données par son nom à deux niveaux, sales.quarter1.
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, %SYSFUNC, fonction LIBNAME, fonction LIBREF
Explication :
La variable de macro mylibref spécifie le nom du libref, new. La variable de macro mydirectory spécifie l'emplacement de la bibliothèque. Substituez l'emplacement de votre bibliothèque par library-location. L'emplacement doit déjà exister et être accessible par le Compute Server. Une instruction IF-THEN-ELSE appelle la fonction de macro %SYSFUNC, qui à son tour appelle la fonction LIBNAME pour tenter l'affectation de la bibliothèque. Si une erreur ou un avertissement se produit, le message est écrit dans le journal SAS. Si aucune erreur ou aucun avertissement ne se produit, alors success est écrit dans le journal. Notez que dans une instruction de macro, vous n'entourez pas les chaînes de caractères de guillemets. Une autre instruction IF-THEN-ELSE appelle la fonction de macro %SYSFUNC, qui appelle la fonction LIBREF pour valider l'affectation de la bibliothèque. Encore une fois, si une erreur ou un avertissement se produit, le message est écrit dans le journal SAS. Si aucune erreur ou aucun avertissement ne se produit, un message informatif est écrit dans le journal. La macro test s'exécute.
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
Explication :
L'instruction LIBNAME concatène deux bibliothèques SAS. La figure suivante illustre la concaténation. Notez que l'index pour apples n'apparaît pas dans la concaténation. L'ensemble de données lib2.apples a un index. Cependant, l'ensemble de données lib1.apples n'a pas d'index, et lib1 est listée en premier dans la concaténation. SAS supprime l'index lorsque son ensemble de données associé ne fait pas partie de la concaténation. Si plusieurs catalogues portent le même nom, leurs entrées sont concaténées. Le catalogue lib3.formats combine les entrées des catalogues lib1.formats et lib2.formats. Pour plus de détails, consultez Catalog Concatenation dans SAS V9 LIBNAME Engine: Reference. L'idée clé est que la concaténation de bibliothèques vous permet de référencer plusieurs bibliothèques stockées à différents emplacements physiques. Lorsqu'un ensemble de données est ouvert pour l'entrée ou la mise à jour, les bibliothèques concaténées sont recherchées et la première occurrence de l'ensemble de données est utilisée. Lorsqu'un ensemble de données est créé, il est créé dans la première bibliothèque listée dans la concaténation, même si un fichier existe avec le même nom dans une autre bibliothèque de la concaténation. Un comportement indésirable pourrait se produire si des ensembles de données existent avec le même nom à différents emplacements.
Copié !
1LIBNAME lib3 (lib1 lib2);
4 Bloc de code
OPTIONS, SIGNON, LIBNAME, PROC DATASETS
Explication :
L'option système COMAMID= spécifie TCP/IP comme méthode d'accès aux communications. La variable de macro myserver est assignée au nom d'hôte du serveur SAS/CONNECT distant. L'instruction SIGNON fait référence à la variable de macro myserver suivie du numéro de port sur lequel le spawner SAS/CONNECT écoute. Si votre numéro de port ou nom de service est défini dans la variable de macro, omettez-le de l'instruction SIGNON. Dans l'instruction LIBNAME, ne spécifiez pas de moteur. Spécifiez l'emplacement de vos données, et spécifiez la variable de macro myserver dans l'option SERVER=. Incluez le numéro de port s'il est spécifié dans l'instruction SIGNON. PROC DATASETS s'exécute sur le client. Bien que le client accède aux données qui se trouvent sur le serveur, les données ne sont pas écrites sur le disque local du client.
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
Explication :
L'instruction LIBNAME assigne le libref davdata à l'emplacement URL d'un serveur WebDAV. L'option WEBDAV est requise pour accéder à un serveur WebDAV.
Copié !
1LIBNAME davdata v9 "https://www.webserver.com/datadir"
2webdav user="userid" pw="12345";
3 
6 Bloc de code
LIBNAME, DATA STEP, PROC DATASETS Data
Explication :
L'instruction LIBNAME spécifie le libref mytddata et TERADATA, qui est le surnom du moteur pour SAS/ACCESS Interface to Teradata. L'instruction spécifie également les options de connexion pour Teradata. Modifiez ces options pour spécifier vos valeurs de connexion SAS/ACCESS et toute autre option dont vous avez besoin. L'étape DATA crée une table nommée grades. La table se trouve dans le SGBD Teradata et n'est pas un ensemble de données SAS. La sortie PROC DATASETS pour la bibliothèque mytddata montre que le moteur est Teradata. Pour la table grades, le type de membre SAS est DATA et le type de membre SGBD est TABLE.
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
LIBNAME, DATA STEP, PROC PRINT, PROC DATASETS
Explication :
Dans l'instruction LIBNAME, le libref target est assigné à un emplacement de bibliothèque SAS. Substituez l'emplacement de votre bibliothèque par library-path. Aucun moteur n'est spécifié, donc SAS assigne le moteur V9 par défaut. C'est la même instruction LIBNAME SAS/ACCESS que dans l'exemple 'Accéder aux données SGBD comme une bibliothèque SAS'. L'étape DATA crée une vue SAS nommée highgrades qui fait référence à la table Teradata nommée grades. La vue inclut les lignes où la variable final est supérieure à 80. PROC PRINT exécute la vue. Sachez que les vues d'étape DATA ne conservent pas l'instruction LIBNAME. Par conséquent, lorsque vous faites référence à cette vue, vous devez d'abord soumettre les instructions LIBNAME pour la bibliothèque mytddata ainsi que la bibliothèque target.
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;
8 Bloc de code
OPTIONS, LIBNAME
Explication :
Cet exemple définit l'option système DLCREATEDIR afin de créer un sous-dossier pour une bibliothèque. Dans l'exemple, le dossier /home/userid/mydata/ existe, mais le sous-dossier project n'existe pas. Étant donné que l'option système DLCREATEDIR est définie, SAS crée project.
Copié !
1options dlcreatedir;
2LIBNAME mynewlib '/home/userid/mydata/project';
3 
9 Bloc de code
LIBNAME
Explication :
Cette instruction désaffecte le libref mylib de son emplacement physique.
Copié !
1LIBNAME mylib clear;
10 Bloc de code
LIBNAME
Explication :
Utilisez le mot-clé _ALL_ dans l'instruction LIBNAME pour désaffecter toutes les affectations de bibliothèque (autres que les bibliothèques système).
Copié !
1LIBNAME _all_ clear;
11 Bloc de code
Macro, %SYSFUNC, fonction LIBNAME
Explication :
Vous pouvez également utiliser la fonction LIBNAME. Le code suivant désaffecte le libref new, qui a été assigné dans l'exemple 'Assigner un Libref avec une fonction'.
Copié !
1%macro test;
2 %IF (%sysfunc(LIBNAME(new))) %THEN
3 %put %sysfunc(sysmsg());
4%mend test;
5%test
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


Documentation liée : Accès aux Données

Sujet / Mot-cléLien vers la ressource
DOC FedSQL fr/sampleCode/FEDSQLD493
DOC Définitions des Moteurs SAS fr/sampleCode/DEFINI88E2
DOC Bibliothèques SAS par Défaut fr/sampleCode/BIBLIOB755
DOC Fonctionnement des Moteurs avec les Fichiers fr/sampleCode/FONCTI81D4
DOC Caractéristiques des moteurs SAS fr/sampleCode/CARACTABC0
DOC Définitions des Moteurs SAS fr/sampleCode/DEFINI6352
Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« Maîtriser l'instruction LIBNAME, c'est maîtriser l'accès à l'information. Que vos données soient sur un disque local, un serveur distant, une base Teradata ou un serveur WebDAV, SAS utilise une syntaxe unifiée pour que vous puissiez les manipuler avec la même simplicité. »