Publicado el :

Recuperación de bibliotecas de metadatos

Este código también está disponible en: Deutsch English Français
En espera de validación
Este script utiliza el procedimiento `PROC METADATA` para consultar el repositorio de metadatos (OMR - SAS© 9 Metadata Server). Envía una solicitud XML para listar los objetos de tipo 'SASLibrary'. La respuesta XML se lee luego a través de un mapeo XML (SXLEMAP) creado dinámicamente para producir una tabla SAS© que contiene el identificador, el nombre, el libref y el motor de cada biblioteca. Este código es típico de entornos SAS© 9 o híbridos, pero no permite consultar la infraestructura nativa de SAS© Viya (que utiliza microservicios/CAS).
Análisis de datos

Type : EXTERNE


Los datos provienen de una consulta al Servidor de Metadatos SAS (Metadata Server) a través de PROC METADATA.

1 Bloque de código
DATA STEP
Explicación :
Cálculo y almacenamiento en una macrovariable de los indicadores (flags) necesarios para la solicitud de metadatos (OMI_SUCCINCT, OMI_GET_METADATA, OMI_ALL_SIMPLE).
¡Copiado!
1DATA _null_;
2 flags=2048+256+8;
3 call symputx('flags',flags,'l');
4RUN;
2 Bloque de código
PROC METADATA
Explicación :
Ejecución de la consulta al servidor de metadatos para recuperar todos los objetos 'SASLibrary'. El resultado XML se almacena en la referencia de archivo temporal 'response'.
¡Copiado!
1filename response temp;
2/* get list of libraries */
3PROC METADATA in=
4 '<GetMetadataObjects>
5 <Reposid>$METAREPOSITORY</Reposid>
6 <Type>SASLibrary</Type>
7 <Objects/>
8 <NS>SAS</NS>
9 <Flags>&flags</Flags>
10 <Options/>
11 </GetMetadataObjects>'
12 out=response;
13RUN;
3 Bloque de código
DATA STEP
Explicación :
Paso de depuración que escribe el contenido bruto de la respuesta XML en el registro SAS.
¡Copiado!
1/* write the response to the log for debugging */
2DATA _null_;
3 INFILE response lrecl=32767;
4 INPUT;
5 put _infile_;
6RUN;
4 Bloque de código
DATA STEP
Explicación :
Generación dinámica de un archivo SXLEMAP (Mapa XML) para definir cómo analizar el archivo XML devuelto y extraer los atributos deseados (Id, Name, Libref, Engine) como columnas.
¡Copiado!
1filename sxlemap temp;
2DATA _null_;
3 file sxlemap;
4 put '<SXLEMAP version="1.2" name="SASLibrary">';
5 put '<TABLE name="SASLibrary">';
6 put '<TABLE-PATH syntax="XPath">//Objects/SASLibrary</TABLE-PATH>';
7 put '<COLUMN name="LibraryId">><LENGTH>17</LENGTH>';
8 put '<PATH syntax="XPath">//Objects/SASLibrary/ @Id</PATH></COLUMN>';
9 put '<COLUMN name="LibraryName"><LENGTH>256</LENGTH>>';
10 put '<PATH syntax="XPath">//Objects/SASLibrary/ @Name</PATH></COLUMN>';
11 put '<COLUMN name="LibraryRef"><LENGTH>8</LENGTH>';
12 put '<PATH syntax="XPath">//Objects/SASLibrary/ @Libref</PATH></COLUMN>';
13 put '<COLUMN name="Engine">><LENGTH>12</LENGTH>';
14 put '<PATH syntax="XPath">//Objects/SASLibrary/ @Engine</PATH></COLUMN>';
15 put '</TABLE></SXLEMAP>';
16RUN;
5 Bloque de código
PROC SORT Data
Explicación :
Asignación del motor XML utilizando el archivo de respuesta y el mapa generado, seguida de la creación de la tabla de salida ordenada por nombre de biblioteca.
¡Copiado!
1LIBNAME _XML_ xml xmlfileref=response xmlmap=sxlemap;
2 
3/* sort the response by library name */
4PROC SORT DATA=_XML_.saslibrary out=&outds;
5 BY libraryname;
6RUN;
6 Bloque de código
DATA STEP
Explicación :
Limpieza del entorno liberando las referencias de archivos (filename) y de biblioteca (libname).
¡Copiado!
1/* clear references */
2filename sxlemap clear;
3filename response clear;
4LIBNAME _XML_ 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 : Allan Bowe