Publicado el :
Macro CREATION_INTERNE | MIXTE

Macro para la extracción de rutas y URI de metadatos

Este código también está disponible en: Deutsch Français
En espera de validación
Attention : Este código requiere privilegios de administrador.
La macro `%mm_getTree` está diseñada para consultar el servidor de metadatos de SAS© para recuperar información sobre objetos 'Tree' o carpetas. Acepta un parámetro `tree` que puede ser una ruta o un URI de metadatos. Opcionalmente, se puede proporcionar un conjunto de datos existente (`inds`) para ser aumentado con la información de ruta y URI. El script utiliza funciones `metadata_` para resolver la entrada, recorrer el árbol de padres si es necesario para construir la ruta completa (`treepath`), y extraer el URI del objeto. El resultado es un nuevo conjunto de datos (`outds`, por defecto `work.mm_getTree`) que contiene las columnas `treeuri` y `treepath` para cada elemento encontrado. Se incluye un parámetro de depuración (`mDebug`) para facilitar el rastreo de las operaciones.
Análisis de datos

Type : CREATION_INTERNE | MIXTE


El script genera un conjunto de datos SAS (`&outds`) internamente, a partir de los metadatos consultados en el servidor SAS. También puede integrar esta información en un conjunto de datos SAS existente (`&inds`) si se proporciona como entrada, haciendo que el tipo de fuente sea 'MIXTO'.

1 Bloque de código
MACRO | DATA STEP Data
Explicación :
Este bloque define la macro `%mm_getTree`. Maneja las opciones de depuración y utiliza un paso `DATA` para construir el conjunto de datos de salida. Las funciones `metadata_resolve`, `metadata_getattr`, `metadata_getnasn` y `metadata_pathobj` se utilizan para consultar el servidor de metadatos de SAS. El código determina si la entrada `tree` es un 'Tree' o una 'Folder' y construye dinámicamente el `treepath` recorriendo las relaciones parentales. Se utilizan variables temporales prefijadas con `__` y se eliminan antes de la salida final. Solo se conservan las observaciones con valores no vacíos para `treeuri` y `treepath`.
¡Copiado!
1%macro mm_getTree(
2 tree=
3 ,inds=
4 ,outds=work.mm_getTree
5 ,mDebug=0
6)/*/STORE SOURCE*/;
7 
8%local mD;
9%IF &mDebug=1 %THEN %let mD=;
10%ELSE %let mD=%str(*);
11%&mD.put Executing mm_getTree.sas;
12%&mD.put _local_;
13 
14DATA &outds;
15 LENGTH treeuri __parenturi __type __name $256 treepath $512;
16%IF %LENGTH(&inds)>0 %THEN %DO;
17 SET &inds;
18%END;
19 __rc1=metadata_resolve("&tree",__type,treeuri);
20 
21 IF __type='Tree' THEN DO;
22 __rc2=metadata_getattr(treeuri,"Name",__name);
23 treepath=cats('/',__name);
24 /* get parents */
25 DO while (metadata_getnasn(treeuri,"ParentTree",1,__parenturi)>0);
26 __rc3=metadata_getattr(__parenturi,"Name",__name);
27 treepath=cats('/',__name,treepath);
28 treeuri=__parenturi;
29 END;
30 treeuri="&tree";
31 END;
32 ELSE DO;
33 __rc2=metadata_pathobj(' ',"&tree",'Folder',__type,treeuri);
34 treepath="&tree";
35 END;
36 
37 %&mD.put (_all_)(=);
38 drop __:;
39 IF treeuri ne "" and treepath ne "" THEN OUTPUT;
40 stop;
41RUN;
42%mend mm_getTree;
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 : Copyright (c) 2001-2006 Rodney Sparapani (Licencia Pública General GNU). Menciona a Allan Bowe.