Publié le :
Macro CREATION_INTERNE | MIXTE

Macro pour l'extraction de chemins et URI de métadonnées

Ce code est également disponible en : Deutsch Español
En attente de validation
Attention : Ce code nécessite des droits administrateur.
La macro `%mm_getTree` est conçue pour interroger le serveur de métadonnées SAS© afin de récupérer des informations sur des objets 'Tree' ou des dossiers. Elle accepte un paramètre `tree` qui peut être un chemin ou un URI de métadonnées. Optionnellement, un jeu de données existant (`inds`) peut être fourni pour être augmenté avec les informations de chemin et d'URI. Le script utilise des fonctions `metadata_` pour résoudre l'entrée, parcourir l'arborescence des parents si nécessaire pour construire le chemin complet (`treepath`), et extraire l'URI de l'objet. Le résultat est un nouveau jeu de données (`outds`, par défaut `work.mm_getTree`) contenant les colonnes `treeuri` et `treepath` pour chaque élément trouvé. Un paramètre de débogage (`mDebug`) est inclus pour faciliter le traçage des opérations.
Analyse des données

Type : CREATION_INTERNE | MIXTE


Le script génère un jeu de données SAS (`&outds`) en interne, à partir des métadonnées interrogées sur le serveur SAS. Il peut également intégrer ces informations à un jeu de données SAS existant (`&inds`) s'il est fourni comme entrée, rendant le type de source 'MIXTE'.

1 Bloc de code
MACRO | DATA STEP Data
Explication :
Ce bloc définit la macro `%mm_getTree`. Il gère les options de débogage et utilise une étape `DATA` pour construire le jeu de données de sortie. Les fonctions `metadata_resolve`, `metadata_getattr`, `metadata_getnasn` et `metadata_pathobj` sont utilisées pour interroger le serveur de métadonnées SAS. Le code détermine si l'entrée `tree` est un 'Tree' ou un 'Folder' et construit dynamiquement le `treepath` en parcourant les relations parentales. Des variables temporaires préfixées par `__` sont utilisées et supprimées avant la sortie finale. Seules les observations avec des valeurs non vides pour `treeuri` et `treepath` sont conservées.
Copié !
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;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Copyright (c) 2001-2006 Rodney Sparapani (Licence Publique Générale GNU). Mentionne Allan Bowe.