Veröffentlicht am :

Extrahieren von Stored Processes vom Metadatenserver

Dieser Code ist auch verfügbar auf: Français
Wartet auf Validierung
Attention : Dieser Code erfordert Administratorrechte.
Das Skript stellt eine Verbindung zu einem SAS©-Metadatenserver (typischerweise SAS© 9) über ein Administratorkonto her. Es verwendet die Metadaten-Interface-Funktionen (metadata_resolve, metadata_getnobj usw.), um alle Objekte vom Typ 'StoredProcess' zu identifizieren. Für jeden Prozess extrahiert es die zeitlichen Attribute und rekonstruiert dynamisch den vollständigen Ordnerpfad, indem es die Hierarchie der übergeordneten Objekte ('ParentTree') zurückverfolgt. Die Ergebnisse werden in einer sortierten Tabelle konsolidiert.
Datenanalyse

Type : EXTERNE


Die Daten werden dynamisch von einem Metadatenserver über die 'metadata_*'-Funktionen extrahiert. Das Skript fungiert als Metadaten-Client.

1 Codeblock
OPTIONS
Erklärung :
Definition der Verbindungsparameter zum Metadatenserver (Host, Port, Administratorbenutzer 'sasadm').
Kopiert!
1options
2 metaserver="<hostname>"
3 metaport=8561
4 metarepository=Foundation
5 metaprotocol=bridge
6 metauser="sasadm @saspw"
7 metapass="<password>";
2 Codeblock
DATA STEP Data
Erklärung :
Hauptschleife, die Metadaten für jeden Stored Process abfragt, Informationen extrahiert und den Ordnerpfad über eine 'do while'-Schleife auf dem übergeordneten Baum rekonstruiert.
Kopiert!
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 Codeblock
PROC SQL Data
Erklärung :
Erstellung der finalen Tabelle 'stp_paths_sorted' durch Sortierung der Ergebnisse nach Aktualisierungsdatum und Pfad.
Kopiert!
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;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : Author: Greg Wootton Date: 07FEB2017


Banner
Expertenrat
Expert
Simon
Expert SAS et fondateur.
« In einer gewachsenen SAS 9-Umgebung sind Stored Processes (STP) das Herzstück vieler Geschäftsprozesse. Da sie oft tief in der Ordnerstruktur der Metadaten verborgen sind, ist eine automatisierte Bestandsaufnahme für die Governance unerlässlich. Dieses Skript nutzt einen rekursiven Ansatz, um abstrakte Metadaten-URIs in eine lesbare, operative Pfadstruktur zu transformieren.

Dieses Skript ist der ideale Ausgangspunkt für Migrationsprojekte (z. B. nach SAS Viya). Wenn Sie diese Ergebnisse mit den Server-Logfiles kombinieren, können Sie genau bestimmen, welche Stored Processes tatsächlich noch genutzt werden und welche sicher archiviert werden können. »