Publicado el :
Administración CREATION_INTERNE

Recuperación de tipos de metadatos SAS

Este código también está disponible en: Deutsch English Français
En espera de validación
Attention : Este código requiere privilegios de administrador.
Esta macro utiliza el procedimiento `PROC METADATA` para enviar una solicitud `<GetTypes>` al servidor de metadatos SAS©. La respuesta XML se almacena en un archivo temporal. El script genera dinámicamente un archivo de mapeo XML (XML Map) para extraer los campos ID, Description y HasSubtypes. Finalmente, los datos se convierten a una tabla SAS© a través del motor LIBNAME XML y se ordenan. NOTA IMPORTANTE: Este código se basa en la arquitectura del servidor de metadatos de SAS© 9. No es compatible con la arquitectura nativa de SAS© Viya 4 (basada en microservicios) y solo funcionará si se ejecuta en un contexto conectado a un servidor SAS© 9 heredado.
Análisis de datos

Type : CREATION_INTERNE


Los datos provienen de una consulta del sistema al servidor de metadatos (PROC METADATA) y se procesan a través de archivos temporales generados por el script.

1 Bloque de código
PROC METADATA
Explicación :
Envía una solicitud XML formateada al servidor de metadatos para recuperar la lista de tipos de objetos disponibles. La respuesta se almacena en el fileref temporal 'response'.
¡Copiado!
1filename response temp;
2/* get list of libraries */
3PROC METADATA in=
4 '<GetTypes>
5 <Types/>
6 <NS>SAS</NS>
7 <!-- specify the OMI_SUCCINCT flag -->
8 <Flags>2048</Flags>
9 <Options>
10 <!-- include <REPOSID> XML element and a repository identifier -->
11 <Reposid>$METAREPOSITORY</Reposid>
12 </Options>
13 </GetTypes>'
14 out=response;
15RUN;
2 Bloque de código
DATA STEP
Explicación :
Escribe el contenido de la respuesta XML bruta en el registro SAS con fines de depuración.
¡Copiado!
1DATA _null_;
2 INFILE response lrecl=1048576;
3 INPUT;
4 put _infile_;
5RUN;
3 Bloque de código
DATA STEP
Explicación :
Crea dinámicamente un archivo 'XML Map' (sxlemap) que define cómo analizar el flujo XML devuelto por PROC METADATA para extraer una estructura tabular.
¡Copiado!
1filename sxlemap temp;
2DATA _null_;
3 file sxlemap;
4 put '<SXLEMAP version="1.2" name="SASTypes"><TABLE name="SASTypes">';
5 put '<TABLE-PATH syntax="XPath">//GetTypes/Types/Type</TABLE-PATH>';
6 put '<COLUMN name="ID"><LENGTH>64</LENGTH>';
7 put '<PATH syntax="XPath">//GetTypes/Types/Type/ @Id</PATH></COLUMN>';
8 /* ... (autres colonnes) ... */
9 put '</TABLE></SXLEMAP>';
10RUN;
4 Bloque de código
PROC SORT Data
Explicación :
Utiliza el motor LIBNAME XML para leer el archivo 'response' aplicando el mapa 'sxlemap', y luego ordena los datos extraídos por la columna 'ID' para crear la tabla de salida final.
¡Copiado!
1LIBNAME _XML_ xml xmlfileref=response xmlmap=sxlemap;
2/* sort the response by library name */
3PROC SORT DATA=_XML_.sastypes out=&outds;
4 BY id;
5RUN;
5 Bloque de código
Nettoyage
Explicación :
Libera las referencias a los archivos temporales y a la biblioteca XML.
¡Copiado!
1filename sxlemap clear;
2filename response clear;
3LIBNAME _XML_ clear;
4 
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.
Banner
Consejo del Experto
Expert
Simon
Expert SAS et fondateur.
« Es fundamental entender que este programa es inseparable de la Open Metadata Architecture (OMA). En SAS Viya, este concepto de "Tipos" es reemplazado por definiciones de recursos gestionadas por microservicios (Folders, Identities, etc.). Por lo tanto, este código no es apto para explorar la infraestructura nativa de Viya, salvo en entornos híbridos donde Viya aún interactúe con un servidor de metadatos 9.4 remoto. »