Veröffentlicht am :

Abrufen von Metadatenbibliotheken

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Dieses Skript verwendet das `PROC METADATA`-Verfahren, um das Metadaten-Repository (OMR - SAS© 9 Metadata Server) abzufragen. Es sendet eine XML-Anfrage, um Objekte vom Typ 'SASLibrary' aufzulisten. Die XML-Antwort wird dann über eine dynamisch erstellte XML-Zuordnung (SXLEMAP) gelesen, um eine SAS©-Tabelle zu erstellen, die die ID, den Namen, den Libref und die Engine jeder Bibliothek enthält. Dieser Code ist typisch für SAS© 9- oder Hybridumgebungen, ermöglicht jedoch keine Abfrage der nativen SAS© Viya-Infrastruktur (die Microservices/CAS verwendet).
Datenanalyse

Type : EXTERNE


Die Daten stammen aus einer Abfrage des SAS Metadata Servers über PROC METADATA.

1 Codeblock
DATA STEP
Erklärung :
Berechnung und Speicherung der Flags (OMI_SUCCINCT, OMI_GET_METADATA, OMI_ALL_SIMPLE) in einer Makrovariablen, die für die Metadatenabfrage erforderlich sind.
Kopiert!
1DATA _null_;
2 flags=2048+256+8;
3 call symputx('flags',flags,'l');
4RUN;
2 Codeblock
PROC METADATA
Erklärung :
Ausführung der Anfrage an den Metadatenserver, um alle 'SASLibrary'-Objekte abzurufen. Das XML-Ergebnis wird in der temporären Dateireferenz 'response' gespeichert.
Kopiert!
1filename response temp;
2/* get list of libraries */
3PROC METADATA in=
4 '<GetMetadataObjects>
5 <Reposid>$METAREPOSITORY</Reposid>
6 <Type>SASLibrary</Type>
7 <Objects/>
8 <NS>SAS</NS>
9 <Flags>&flags</Flags>
10 <Options/>
11 </GetMetadataObjects>'
12 out=response;
13RUN;
3 Codeblock
DATA STEP
Erklärung :
Debug-Schritt, der den Rohinhalt der XML-Antwort in das SAS-Protokoll schreibt.
Kopiert!
1/* write the response to the log for debugging */
2DATA _null_;
3 INFILE response lrecl=32767;
4 INPUT;
5 put _infile_;
6RUN;
4 Codeblock
DATA STEP
Erklärung :
Dynamische Generierung einer SXLEMAP-Datei (XML-Map), um zu definieren, wie die zurückgegebene XML-Datei geparst und die gewünschten Attribute (Id, Name, Libref, Engine) als Spalten extrahiert werden.
Kopiert!
1filename sxlemap temp;
2DATA _null_;
3 file sxlemap;
4 put '<SXLEMAP version="1.2" name="SASLibrary">';
5 put '<TABLE name="SASLibrary">';
6 put '<TABLE-PATH syntax="XPath">//Objects/SASLibrary</TABLE-PATH>';
7 put '<COLUMN name="LibraryId">><LENGTH>17</LENGTH>';
8 put '<PATH syntax="XPath">//Objects/SASLibrary/ @Id</PATH></COLUMN>';
9 put '<COLUMN name="LibraryName"><LENGTH>256</LENGTH>>';
10 put '<PATH syntax="XPath">//Objects/SASLibrary/ @Name</PATH></COLUMN>';
11 put '<COLUMN name="LibraryRef"><LENGTH>8</LENGTH>';
12 put '<PATH syntax="XPath">//Objects/SASLibrary/ @Libref</PATH></COLUMN>';
13 put '<COLUMN name="Engine">><LENGTH>12</LENGTH>';
14 put '<PATH syntax="XPath">//Objects/SASLibrary/ @Engine</PATH></COLUMN>';
15 put '</TABLE></SXLEMAP>';
16RUN;
5 Codeblock
PROC SORT Data
Erklärung :
Zuweisung der XML-Engine unter Verwendung der Antwortdatei und der generierten Map, gefolgt von der Erstellung der Ausgabetabelle, sortiert nach Bibliotheksname.
Kopiert!
1LIBNAME _XML_ xml xmlfileref=response xmlmap=sxlemap;
2 
3/* sort the response by library name */
4PROC SORT DATA=_XML_.saslibrary out=&outds;
5 BY libraryname;
6RUN;
6 Codeblock
DATA STEP
Erklärung :
Bereinigung der Umgebung durch Freigabe der Datei- (filename) und Bibliotheksreferenzen (libname).
Kopiert!
1/* clear references */
2filename sxlemap clear;
3filename response clear;
4LIBNAME _XML_ clear;
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 : Allan Bowe