Publicado el :
Acceso a Datos CREATION_INTERNE

Acceder a Datos a Través de un Libref

Este código también está disponible en: Deutsch English Français
En espera de validación
Esta documentación explora los conceptos fundamentales de la gestión de bibliotecas SAS© y el acceso a los datos. Cada sección presenta un escenario específico con el código SAS© correspondiente, explicaciones detalladas y puntos clave a recordar. Se hace hincapié en la compatibilidad con SAS© Viya 4 y SAS© Studio, garantizando que el código sea autónomo y directamente ejecutable.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos utilizan datos generados (datalines) o SASHELP.

1 Bloque de código
LIBNAME, DATA STEP, PROC PRINT Data
Explicación :
La instrucción LIBNAME asigna el libref sales a la ubicación de una biblioteca. Sustituya la ubicación de su biblioteca por library-path. La ubicación ya debe existir y ser accesible por el SAS Compute Server. El paso DATA crea el conjunto de datos sales.quarter1 y lo almacena en la ubicación física de la biblioteca. El paso PROC PRINT hace referencia al conjunto de datos por su nombre de dos niveles, sales.quarter1.
¡Copiado!
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 Bloque de código
Macro, %SYSFUNC, función LIBNAME, función LIBREF
Explicación :
La variable macro mylibref especifica el nombre del libref, new. La variable macro mydirectory especifica la ubicación de la biblioteca. Sustituya la ubicación de su biblioteca por library-location. La ubicación ya debe existir y ser accesible por el Compute Server. Una instrucción IF-THEN-ELSE llama a la función macro %SYSFUNC, que a su vez llama a la función LIBNAME para intentar la asignación de la biblioteca. Si ocurre un error o advertencia, el mensaje se escribe en el registro SAS. Si no ocurre ningún error o advertencia, se escribe success en el registro. Tenga en cuenta que en una instrucción macro, no encierra las cadenas de caracteres entre comillas. Otra instrucción IF-THEN-ELSE llama a la función macro %SYSFUNC, que llama a la función LIBREF para validar la asignación de la biblioteca. De nuevo, si ocurre un error o advertencia, el mensaje se escribe en el registro SAS. Si no ocurre ningún error o advertencia, se escribe un mensaje informativo en el registro. La macro test se ejecuta.
¡Copiado!
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 Bloque de código
LIBNAME
Explicación :
La instrucción LIBNAME concatena dos bibliotecas SAS. La siguiente figura ilustra la concatenación. Tenga en cuenta que el índice para apples no aparece en la concatenación. El conjunto de datos lib2.apples tiene un índice. Sin embargo, el conjunto de datos lib1.apples no tiene índice, y lib1 se lista primero en la concatenación. SAS elimina el índice cuando su conjunto de datos asociado no forma parte de la concatenación. Si varios catálogos tienen el mismo nombre, sus entradas se concatenan. El catálogo lib3.formats combina las entradas de los catálogos lib1.formats y lib2.formats. Para más detalles, consulte Catalog Concatenation en SAS V9 LIBNAME Engine: Reference. La idea clave es que la concatenación de bibliotecas le permite hacer referencia a múltiples bibliotecas almacenadas en diferentes ubicaciones físicas. Cuando se abre un conjunto de datos para entrada o actualización, se buscan las bibliotecas concatenadas y se utiliza la primera aparición del conjunto de datos. Cuando se crea un conjunto de datos, se crea en la primera biblioteca listada en la concatenación, incluso si existe un archivo con el mismo nombre en otra biblioteca de la concatenación. Podría ocurrir un comportamiento no deseado si existen conjuntos de datos con el mismo nombre en diferentes ubicaciones.
¡Copiado!
1LIBNAME lib3 (lib1 lib2);
4 Bloque de código
OPTIONS, SIGNON, LIBNAME, PROC DATASETS
Explicación :
La opción de sistema COMAMID= especifica TCP/IP como método de acceso a las comunicaciones. La variable macro myserver se asigna al nombre de host del servidor SAS/CONNECT remoto. La instrucción SIGNON hace referencia a la variable macro myserver seguida del número de puerto en el que escucha el spawner SAS/CONNECT. Si su número de puerto o nombre de servicio está definido en la variable macro, omítalo de la instrucción SIGNON. En la instrucción LIBNAME, no especifique un motor. Especifique la ubicación de sus datos y la variable macro myserver en la opción SERVER=. Incluya el número de puerto si se especifica en la instrucción SIGNON. PROC DATASETS se ejecuta en el cliente. Aunque el cliente accede a los datos que se encuentran en el servidor, los datos no se escriben en el disco local del cliente.
¡Copiado!
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 Bloque de código
LIBNAME
Explicación :
La instrucción LIBNAME asigna el libref davdata a la URL de un servidor WebDAV. La opción WEBDAV es necesaria para acceder a un servidor WebDAV.
¡Copiado!
1LIBNAME davdata v9 "https://www.webserver.com/datadir"
2webdav user="userid" pw="12345";
3 
6 Bloque de código
LIBNAME, DATA STEP, PROC DATASETS Data
Explicación :
La instrucción LIBNAME especifica el libref mytddata y TERADATA, que es el alias del motor para la interfaz SAS/ACCESS a Teradata. La instrucción también especifica las opciones de conexión para Teradata. Modifique estas opciones para especificar sus valores de conexión de SAS/ACCESS y cualquier otra opción que necesite. El paso DATA crea una tabla llamada grades. La tabla se encuentra en el DBMS Teradata y no es un conjunto de datos SAS. La salida de PROC DATASETS para la biblioteca mytddata muestra que el motor es Teradata. Para la tabla grades, el tipo de miembro SAS es DATA y el tipo de miembro DBMS es TABLE.
¡Copiado!
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 Bloque de código
LIBNAME, DATA STEP, PROC PRINT, PROC DATASETS
Explicación :
En la instrucción LIBNAME, el libref target se asigna a una ubicación de biblioteca SAS. Sustituya la ubicación de su biblioteca por library-path. No se especifica ningún motor, por lo que SAS asigna el motor V9 por defecto. Esta es la misma instrucción LIBNAME de SAS/ACCESS que en el ejemplo 'Acceder a datos DBMS como una biblioteca SAS'. El paso DATA crea una vista SAS llamada highgrades que hace referencia a la tabla Teradata llamada grades. La vista incluye las filas donde la variable final es mayor que 80. PROC PRINT ejecuta la vista. Tenga en cuenta que las vistas de paso DATA no conservan la instrucción LIBNAME. Por lo tanto, cuando haga referencia a esta vista, primero debe enviar las instrucciones LIBNAME para la biblioteca mytddata, así como para la biblioteca target.
¡Copiado!
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 Bloque de código
OPTIONS, LIBNAME
Explicación :
Este ejemplo establece la opción de sistema DLCREATEDIR para crear una subcarpeta para una biblioteca. En el ejemplo, la carpeta /home/userid/mydata/ existe, pero la subcarpeta project no existe. Dado que la opción de sistema DLCREATEDIR está establecida, SAS crea project.
¡Copiado!
1options dlcreatedir;
2LIBNAME mynewlib '/home/userid/mydata/project';
3 
9 Bloque de código
LIBNAME
¡Copiado!
1LIBNAME mylib clear;
10 Bloque de código
LIBNAME
¡Copiado!
1LIBNAME _all_ clear;
11 Bloque de código
Macro, %SYSFUNC, función LIBNAME
¡Copiado!
1%macro test;
2 %IF (%sysfunc(LIBNAME(new))) %THEN
3 %put %sysfunc(sysmsg());
4%mend test;
5%test
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Copyright © SAS Institute Inc. All Rights Reserved