Publié le :

Extraction des Stored Processes depuis le Serveur de Métadonnées

Ce code est également disponible en : Deutsch
En attente de validation
Attention : Ce code nécessite des droits administrateur.
Le script établit une connexion à un serveur de métadonnées SAS© (typiquement SAS© 9) en utilisant un compte administrateur. Il utilise les fonctions d'interface de métadonnées (metadata_resolve, metadata_getnobj, etc.) pour identifier tous les objets de type 'StoredProcess'. Pour chaque processus, il extrait les attributs temporels et reconstruit dynamiquement le chemin complet du dossier en remontant l'arborescence des objets parents ('ParentTree'). Les résultats sont consolidés dans une table triée.
Analyse des données

Type : EXTERNE


Les données sont extraites dynamiquement d'un serveur de métadonnées via les fonctions 'metadata_*'. Le script agit comme un client de métadonnées.

1 Bloc de code
OPTIONS
Explication :
Définition des paramètres de connexion au serveur de métadonnées (hôte, port, utilisateur administrateur 'sasadm').
Copié !
1options
2 metaserver="<hostname>"
3 metaport=8561
4 metarepository=Foundation
5 metaprotocol=bridge
6 metauser="sasadm @saspw"
7 metapass="<password>";
2 Bloc de code
DATA STEP Data
Explication :
Boucle principale qui interroge les métadonnées pour chaque Stored Process, extrait les informations et reconstruit le chemin du dossier via une boucle 'do while' sur l'arbre parent.
Copié !
1DATA work.stp_paths;
2 LENGTH type $ 13 id $ 17 stp_uri $ 38 tree_uri partree_uri $ 29 path $ 200 folder_name stp_name $ 100 stp_create stp_update $ 18;
3 call missing(type,id,stp_uri,tree_uri,partree_uri,path,folder_name,stp_name,stp_create,stp_update);
4
5 obj="omsobj:ClassifierMap? @PublicType='StoredProcess'";
6 stp_count=metadata_resolve(obj,type,id);
7
8 IF stp_count > 0 THEN DO n=1 to stp_count;
9 rc=metadata_getnobj(obj,n,stp_uri);
10 rc=metadata_getattr(stp_uri,"Name",stp_name);
11 rc=metadata_getattr(stp_uri,"MetadataCreated",stp_create);
12 rc=metadata_getattr(stp_uri,"MetadataUpdated",stp_update);
13 stp_create_num=INPUT(stp_create,DATETIME18.);
14 stp_update_num=INPUT(stp_update,DATETIME18.);
15
16 rc=metadata_getnasn(stp_uri,"Trees",1,tree_uri);
17 rc=metadata_getattr(tree_uri,"Name",folder_name);
18 path=catx("\",folder_name);
19 parent_rc=metadata_getnasn(tree_uri,"ParentTree",1,partree_uri);
20
21 do while (parent_rc > 0);
22 rc=metadata_getattr(partree_uri,"Name",folder_name);
23 path=catx("\",folder_name,path);
24 parent_rc=metadata_getnasn(partree_uri,"ParentTree",1,partree_uri);
25 end;
26 output;
27 end;
28 else put "No stored processes defined in Metadata.";
29 FORMAT stp_create_num stp_update_num datetime18.;
30RUN;
3 Bloc de code
PROC SQL Data
Explication :
Création de la table finale 'stp_paths_sorted' en triant les résultats par date de mise à jour et chemin.
Copié !
1PROC SQL;
2 CREATE TABLE work.stp_paths_sorted AS
3 SELECT path,stp_name,stp_create_num,stp_update_num
4 FROM work.stp_paths ORDER BY stp_update_num ,path;
5QUIT;
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 : Author: Greg Wootton Date: 07FEB2017


Banner
Le Conseil de l'Expert
Expert
Simon
Expert SAS et fondateur.
« Dans un environnement SAS 9 mature, les Stored Processes (STP) représentent une part critique de la logique métier. Cependant, leur gestion devient complexe à mesure que l'arborescence des dossiers se densifie. Ce script utilise une approche récursive pour transformer des URI de métadonnées abstraits en un inventaire opérationnel lisible.

Ce script est un excellent point de départ pour un projet de nettoyage. En couplant ces résultats avec les logs d'exécution du serveur (Stored Process Server), vous pouvez identifier les "STP orphelins" qui consomment de l'espace en métadonnées mais ne sont plus jamais appelés par les utilisateurs. »