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!
filename response temp;
/* get list of libraries */
proc metadata in=
'<GetTypes>
<Types/>
<NS>SAS</NS>
<!-- specify the OMI_SUCCINCT flag -->
<Flags>2048</Flags>
<Options>
<!-- include <REPOSID> XML element and a repository identifier -->
<Reposid>$METAREPOSITORY</Reposid>
</Options>
</GetTypes>'
out=response;
run;
1
filename response temp;
2
/* get list of libraries */
3
PROC 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;
15
RUN;
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!
data _null_;
infile response lrecl=1048576;
input;
put _infile_;
run;
1
DATA _null_;
2
INFILE response lrecl=1048576;
3
INPUT;
4
put _infile_;
5
RUN;
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!
filename sxlemap temp;
data _null_;
file sxlemap;
put '<SXLEMAP version="1.2" name="SASTypes"><TABLE name="SASTypes">';
put '<TABLE-PATH syntax="XPath">//GetTypes/Types/Type</TABLE-PATH>';
put '<COLUMN name="ID"><LENGTH>64</LENGTH>';
put '<PATH syntax="XPath">//GetTypes/Types/Type/ @Id</PATH></COLUMN>';
/* ... (autres colonnes) ... */
put '</TABLE></SXLEMAP>';
run;
1
filename sxlemap temp;
2
DATA _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>';
10
RUN;
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!
libname _XML_ xml xmlfileref=response xmlmap=sxlemap;
/* sort the response by library name */
proc sort data=_XML_.sastypes out=&outds;
by id;
run;
1
LIBNAME _XML_ xml xmlfileref=response xmlmap=sxlemap;
2
/* sort the response by library name */
3
PROC SORTDATA=_XML_.sastypes out=&outds;
4
BY id;
5
RUN;
5 Bloque de código
Nettoyage
Explicación : Libera las referencias a los archivos temporales y a la biblioteca XML.
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.
« 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. »
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.