Publicado el :
Administración CREATION_INTERNE

Extracción de Rutas de Archivos desde Metadatos

Este código también está disponible en: English Français
En espera de validación
Attention : Este código requiere privilegios de administrador.
Este programa configura una conexión a un servidor de metadatos SAS© (parámetros codificados) y realiza un inventario de los archivos físicos referenciados. Utiliza la interfaz de programación de metadatos (funciones `metadata_*`) para consultar objetos de tipo `Directory` (recorriendo sus asociaciones `Files`) y objetos `SASFileRef`. El resultado se consolida en una tabla SAS© llamada 'directories'.
Análisis de datos

Type : CREATION_INTERNE


Los datos se extraen dinámicamente del repositorio de metadatos a través de funciones SAS (metadata_resolve, metadata_getnobj, etc.).

1 Bloque de código
OPTIONS
Explicación :
Definición de las opciones globales para la conexión al servidor de metadatos SAS (servidor, puerto, protocolo, usuario sasadm).
¡Copiado!
1options
2 metaserver='meta.demo.sas.com'
3 metaport=8561
4 metaprotocol='bridge'
5 metauser='sasadm @saspw'
6 metapass='password'
7 metarepository='Foundation'
8 metaconnect='NONE';
2 Bloque de código
DATA STEP Data
Explicación :
Paso Data principal que consulta los metadatos. Utiliza `metadata_resolve` para identificar los objetos, luego itera sobre los resultados. Para cada directorio (`Directory`), recupera la ruta (`DirectoryName`) y explora la asociación `Files` para obtener los nombres de archivo. Para los objetos `SASFileRef`, recupera directamente el atributo `Name`. Las rutas completas se almacenan en la variable `fqn`.
¡Copiado!
1DATA directories;
2 
3 /* Initialize variables. */
4 LENGTH type id dir_uri file_uri $ 50 path file_name fqn $ 255;
5 call missing(of _character_);
6 keep fqn;
7 
8 /* Define a query to find all directory objects */
9 obj="omsobj:Directory?Directory[Files/File[ @code_sas_json/downside_frequency_test.json contains '.']";
10 
11 /* Count the objects that match this query. */
12 dir_count=metadata_resolve(obj,type,id);
13 
14 /* Proceed if any directories are found. */
15 IF dir_count > 0 THEN DO i=1 to dir_count;
16 rc=metadata_getnobj(obj,i,dir_uri);
17 rc=metadata_getattr(dir_uri,"DirectoryName",path);
18 
19 /* Find the files associated with the path. */
20 file_count=metadata_getnasn(dir_uri,"Files",1,file_uri);
21 IF file_count > 0 THEN DO j=1 to file_count;
22 rc=metadata_getnasn(dir_uri,"Files",j,file_uri);
23 rc=metadata_getattr(file_uri,"FileName",file_name);
24 fqn=catx("/",path,file_name);
25 OUTPUT;
26 END;
27 END;
28 /* Define a search query to find any "SASFileRef" object types. */
29 obj2="omsobj:SASFileRef? @code_sas_json/downside_frequency_test.json contains '.'";
30 fileref_count=metadata_resolve(obj2,type,id);
31 IF fileref_count > 0 THEN DO i = 1 to fileref_count;
32 rc=metadata_getnobj(obj2,i,file_uri);
33 rc=metadata_getattr(file_uri,"Name",fqn);
34 OUTPUT;
35 END;
36 
37RUN;
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.