Publicado el :
Acceso a Datos CREATION_INTERNE

Ejemplos: Acceso a Datos Usando un Libref

Este código también está disponible en: Deutsch English Français
En espera de validación
Esta guía esencial explora varios escenarios de acceso a datos en el entorno SAS© Viya. Detalla el uso de la declaración LIBNAME para asociar un nombre lógico (libref) con una ubicación física de biblioteca, y muestra cómo se pueden usar funciones SAS© para esta misma tarea, permitiendo una gestión programática. Los casos avanzados incluyen la concatenación de múltiples bibliotecas SAS©, el acceso seguro a bibliotecas en servidores remotos a través de SAS©/CONNECT, y la integración con servidores WebDAV para compartir datos. Se presta especial atención a la integración de sistemas de gestión de bases de datos (DBMS) con SAS©/ACCESS, incluida la creación de vistas SAS© a partir de tablas DBMS, destacando la flexibilidad de SAS© para trabajar con diversas fuentes de datos. Finalmente, explica cómo gestionar dinámicamente las carpetas de las bibliotecas y eliminar los librefs para optimizar los recursos.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos utilizan datos generados (datalines) o SASHELP, a excepción de los ejemplos de acceso a fuentes externas (SAS/CONNECT, WebDAV, DBMS) para los cuales se utilizan datos simulados o marcadores de posición.

1 Bloque de código
DATA STEP / PROC PRINT Data
Explicación :
Este ejemplo asigna el libref 'sales' a una ruta de biblioteca especificada. Luego crea un conjunto de datos 'quarter1' en esta biblioteca usando un DATA step, y luego usa PROC PRINT para mostrar el contenido del conjunto de datos. La ruta de la biblioteca debe existir y ser accesible por el SAS Compute Server.
¡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 / LIBNAME Function / LIBREF Function
Explicación :
Este macroprograma 'test' asigna dinámicamente un libref ('new') a una ubicación de directorio ('library-location') usando la función LIBNAME. Luego verifica el éxito de la asignación con la función LIBREF y muestra un mensaje apropiado. Las rutas deben ser válidas y accesibles. Las funciones son preferibles para asignaciones programáticas.
¡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 Statement
Explicación :
Esta declaración LIBNAME concatena dos bibliotecas SAS existentes, 'lib1' y 'lib2', bajo el nuevo libref 'lib3'. Esto permite acceder a los datos de ambas bibliotecas usando un solo libref. Al buscar un conjunto de datos, las bibliotecas se exploran en el orden de su lista. Si se crea un conjunto de datos, se coloca en la primera biblioteca de la concatenación.
¡Copiado!
1LIBNAME lib3 (lib1 lib2);
4 Bloque de código
LIBNAME Statement / PROC DATASETS
¡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 Statement
Explicación :
Esta declaración LIBNAME asigna el libref 'davdata' a un directorio en un servidor WebDAV. La opción 'WEBDAV' es crucial para especificar el método de acceso. Se proporcionan credenciales (nombre de usuario y contraseña) para la autenticación. SAS recuperará temporalmente los archivos en el disco local para su procesamiento, luego los enviará de vuelta al servidor después de las modificaciones.
¡Copiado!
1LIBNAME davdata v9 "https://www.webserver.com/datadir"
2webdav user="userid" pw="12345";
3 
6 Bloque de código
DATA STEP / PROC DATASETS Data
Explicación :
Este ejemplo asigna el libref 'mytddata' a una base de datos Teradata, permitiendo el acceso a las tablas como si fueran conjuntos de datos SAS. Se utiliza un DATA step para crear una tabla 'grades' directamente en la base de datos Teradata. Luego, PROC DATASETS se utiliza para mostrar información sobre esta tabla. Cabe señalar que las interfaces SAS/ACCESS no siempre admiten la opción REPLACE= para tablas DBMS.
¡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
DATA STEP / PROC PRINT / PROC DATASETS
Explicación :
Este ejemplo crea una vista SAS llamada 'highgrades' a partir de una tabla Teradata existente ('mytddata.grades'). La vista selecciona solo los registros donde la variable 'final' es mayor que 80. PROC PRINT ejecuta esta vista, y PROC DATASETS muestra que 'highgrades' es de hecho una vista SAS. Los librefs para 'target' y 'mytddata' deben asignarse antes de poder usar esta vista.
¡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;
9PROC DATASETS library=target;
10RUN;
11QUIT;
8 Bloque de código
OPTIONS statement / LIBNAME Statement
Explicación :
Este ejemplo muestra cómo crear automáticamente una subcarpeta para una biblioteca SAS si esta no existe. La opción del sistema 'DLCREATEDIR' está activada, lo que permite a SAS crear la carpeta 'project' si falta en la ruta especificada '/home/userid/mydata/project' al asignar el libref 'mynewlib'.
¡Copiado!
1options dlcreatedir;
2LIBNAME mynewlib '/home/userid/mydata/project';
3 
9 Bloque de código
LIBNAME Statement
Explicación :
Esta declaración LIBNAME desasigna el libref 'mylib' de su ubicación física. Esto es útil para liberar recursos o modificar la asignación de un libref. Para desasignar todos los librefs (excepto las bibliotecas del sistema), se puede usar 'libname _all_ clear;'.
¡Copiado!
1LIBNAME mylib clear;
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