Veröffentlicht am :
Administration CREATION_INTERNE

Abruf von SAS-Metadatentypen

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Attention : Dieser Code erfordert Administratorrechte.
Dieses Makro verwendet die Prozedur `PROC METADATA`, um eine `<GetTypes>`-Anfrage an den SAS© Metadata Server zu senden. Die XML-Antwort wird in einer temporären Datei gespeichert. Das Skript generiert dann dynamisch eine XML-Mapping-Datei (XML Map), um die Felder ID, Description und HasSubtypes zu extrahieren. Schließlich werden die Daten über die LIBNAME XML Engine in eine SAS©-Tabelle konvertiert und sortiert. WICHTIGER HINWEIS: Dieser Code basiert auf der Metadatenserver-Architektur von SAS© 9. Er ist nicht kompatibel mit der nativen Architektur von SAS© Viya 4 (basierend auf Microservices) und funktioniert nur, wenn er in einem Kontext ausgeführt wird, der mit einem älteren SAS© 9 Server verbunden ist.
Datenanalyse

Type : CREATION_INTERNE


Die Daten stammen aus einer Systemabfrage des Metadatenservers (PROC METADATA) und werden über temporäre Dateien verarbeitet, die vom Skript generiert werden.

1 Codeblock
PROC METADATA
Erklärung :
Sendet eine formatierte XML-Anfrage an den Metadatenserver, um die Liste der verfügbaren Objekttypen abzurufen. Die Antwort wird im temporären Fileref 'response' gespeichert.
Kopiert!
1filename response temp;
2/* get list of libraries */
3PROC METADATA in=
4 '<GetTypes>
5 <Types/>
6 <NS>SAS</NS>
7 <!-- specify the OMI_SUCCINCT flag -->
8 <Flags>2048</Flags>
9 <Options>
10 <!-- include <REPOSID> XML element and a repository identifier -->
11 <Reposid>$METAREPOSITORY</Reposid>
12 </Options>
13 </GetTypes>'
14 out=response;
15RUN;
2 Codeblock
DATA STEP
Erklärung :
Schreibt den Inhalt der rohen XML-Antwort zu Debugging-Zwecken in das SAS-Protokoll.
Kopiert!
1DATA _null_;
2 INFILE response lrecl=1048576;
3 INPUT;
4 put _infile_;
5RUN;
3 Codeblock
DATA STEP
Erklärung :
Erstellt dynamisch eine 'XML Map'-Datei (sxlemap), die definiert, wie der von PROC METADATA zurückgegebene XML-Stream geparst wird, um eine tabellarische Struktur zu extrahieren.
Kopiert!
1filename sxlemap temp;
2DATA _null_;
3 file sxlemap;
4 put '<SXLEMAP version="1.2" name="SASTypes"><TABLE name="SASTypes">';
5 put '<TABLE-PATH syntax="XPath">//GetTypes/Types/Type</TABLE-PATH>';
6 put '<COLUMN name="ID"><LENGTH>64</LENGTH>';
7 put '<PATH syntax="XPath">//GetTypes/Types/Type/ @Id</PATH></COLUMN>';
8 /* ... (autres colonnes) ... */
9 put '</TABLE></SXLEMAP>';
10RUN;
4 Codeblock
PROC SORT Data
Erklärung :
Verwendet die LIBNAME XML Engine, um die Datei 'response' unter Anwendung der 'sxlemap' zu lesen und sortiert dann die extrahierten Daten nach der Spalte 'ID', um die endgültige Ausgabetabelle zu erstellen.
Kopiert!
1LIBNAME _XML_ xml xmlfileref=response xmlmap=sxlemap;
2/* sort the response by library name */
3PROC SORT DATA=_XML_.sastypes out=&outds;
4 BY id;
5RUN;
5 Codeblock
Nettoyage
Erklärung :
Gibt die Verweise auf temporäre Dateien und die XML-Bibliothek frei.
Kopiert!
1filename sxlemap clear;
2filename response clear;
3LIBNAME _XML_ clear;
4 
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.
Banner
Expertenrat
Expert
Simon
Expert SAS et fondateur.
« Dieser Code ist untrennbar mit der Open Metadata Architecture (OMA) verbunden. In SAS Viya wird dieses Typ-Konzept durch Ressourcen-Definitionen ersetzt, die von verschiedenen Microservices verwaltet werden. Daher kann dieser Code nicht zur Untersuchung nativer Viya-Infrastrukturen verwendet werden, es sei denn, Sie arbeiten in einer hybriden Umgebung, in der Viya mit einem entfernten SAS 9.4 Server kommuniziert. »