La fuente de datos es el propio servidor de metadatos de SAS. La tabla `work.libinfo` es generada completamente por el script al consultar los metadatos a través de funciones específicas como `metadata_resolve` y `metadata_getnobj`. No se lee ningún dato externo.
1 Bloque de código
OPTIONS
Explicación : Este bloque configura los parámetros de conexión al servidor de metadatos de SAS. Define la dirección del servidor, el puerto, las credenciales del usuario, el repositorio a utilizar y el protocolo de comunicación.
Explicación : Este DATA STEP crea la tabla `work.libinfo`. Inicializa las variables y luego utiliza la función `metadata_resolve` para encontrar todas las bibliotecas SAS en los metadatos. Nota: la consulta `obj` contiene una referencia a un archivo que parece inválida para una consulta de metadatos. Para cada biblioteca encontrada, itera para extraer sus propiedades (`metadata_getattr`) y luego busca las tablas físicas asociadas a través de una segunda consulta `metadata_resolve`. Si se encuentran tablas, se extraen sus nombres y se escribe una línea en la tabla de salida `work.libinfo` con el libref, el nombre de la biblioteca y el nombre de la tabla.
¡Copiado!
data work.libinfo;
/*declare and initialize variables */
length
type $ 20
lib_ref $ 8
lib_uri lib_name app_uri app_name dir_uri tab_uri tab_name $ 50
id lib_id $ 17
path $ 255;
keep lib_ref lib_name tab_name;
call missing(of _character_);
/* Define library search parameters. */
obj="omsobj:SASLibrary? @code_sas_json/RFValid.json contains '.'";
/* Search Metadata for libraries */
libcount=metadata_resolve(obj,type,id);
put "INFO: Found " libcount "libraries.";
/* for each library found, extract name and associated */
/* properties (first associated application server, path) */
if libcount > 0 then do n=1 to libcount;
rc=metadata_getnobj(obj,n,lib_uri);
rc=metadata_getattr(lib_uri,"Name",lib_name);
rc=metadata_getattr(lib_uri,"Id",lib_id);
rc=metadata_getattr(lib_uri,"Libref",lib_ref);
rc=metadata_getnasn(lib_uri,"DeployedComponents",1,app_uri);
rc=metadata_getattr(app_uri,"Name",app_name);
rc=metadata_getnasn(lib_uri,"UsingPackages",1,dir_uri);
rc=metadata_getattr(dir_uri,"DirectoryName",path);
/* Define a query to search for any tables */
/* associated with the library in Metadata. */
tabobj="omsobj:PhysicalTable?PhysicalTable[TablePackage/SASLibrary[ @Id='"||lib_id||"']] or [TablePackage/DatabaseSchema/UsedByPackages/SASLibrary[ @Id='"||lib_id||"']]";
/* Count how many associations exist. */
tabcount=metadata_resolve(tabobj,type,id);
/* If there are any, pull the name of each one and write out the data set. */
if tabcount > 0 then do t=1 to tabcount;
rc=metadata_getnobj(tabobj,t,tab_uri);
rc=metadata_getattr(tab_uri,"Name",tab_name);
output; /* Push results to table */
end;
call missing (path); /* clear path variable. */
end;
else put "INFO: No libraries to resolve.";
run;
tabobj="omsobj:PhysicalTable?PhysicalTable[TablePackage/SASLibrary[ @Id='"||lib_id||"']] or [TablePackage/DatabaseSchema/UsedByPackages/SASLibrary[ @Id='"||lib_id||"']]";
38
39
/* Count how many associations exist. */
40
41
tabcount=metadata_resolve(tabobj,type,id);
42
43
/* If there are any, pull the name of each one and write out the data set. */
44
45
IF tabcount > 0 THENDO t=1 to tabcount;
46
rc=metadata_getnobj(tabobj,t,tab_uri);
47
rc=metadata_getattr(tab_uri,"Name",tab_name);
48
OUTPUT; /* Push results to table */
49
END;
50
call missing (path); /* clear path variable. */
51
END;
52
ELSE put "INFO: No libraries to resolve.";
53
RUN;
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 : Author: Greg Wootton Date: 08FEB2017
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.