Veröffentlicht am :
ETL SASHELP

Datenverarbeitung und XML-Export

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Das Skript beginnt mit einem Makro `%defaults`, das die globale Variable `dset` auf `sashelp.class` initialisiert, falls sie noch nicht definiert ist. Anschließend wird ein `DATA _NULL_` verwendet, um den durch `&dset` angegebenen Datensatz zu öffnen und die Anzahl der Beobachtungen (`nobs`) abzurufen, die dann in einer globalen Makrovariable `nobs` gespeichert wird. Danach wird ein dedizierter XML-Abschnitt ausgeführt. Dieser verwendet die Funktion `pathname(work)`, um den Pfad des Arbeitsverzeichnisses zu erhalten, und definiert dann eine XML-Bibliothek namens `test`, die auf eine Datei `temp.xml` in diesem Verzeichnis zeigt. Der Inhalt des Datensatzes `&dset` wird dann in diese XML-Bibliothek kopiert, wodurch die Datei `temp.xml` erstellt wird. Nach der Freigabe der Libname `test` liest das Skript die Datei `temp.xml` und zeigt deren Inhalt über `_webout` an. Ein Teil des Codes für die JSON-Generierung ist vorhanden, aber auskommentiert. Das Skript endet mit den Deklarationen `%STPBEGIN` und `%STPEND`, die anzeigen, dass es als gespeicherter SAS©-Prozess ausgeführt werden soll.
Datenanalyse

Type : SASHELP


Das Skript verwendet standardmäßig den Datensatz `sashelp.class`. Dieser Datensatz ist intern in SAS und immer verfügbar.

1 Codeblock
MACRO
Erklärung :
Dieser Block definiert und ruft ein Makro `%defaults` auf. Dieses Makro überprüft das Vorhandensein der Makrovariable `dset`. Falls `dset` nicht existiert, deklariert es diese global und initialisiert sie mit dem Pfad `sashelp.class`.
Kopiert!
1%macro defaults ;
2 %* these defaults may be passed in, or ELSE they default ;
3 %IF %symexist(dset)=0 %THEN %DO;
4 %global dset;
5 %let dset=sashelp.class;
6 %END;
7%mend defaults;
8%defaults
2 Codeblock
DATA STEP
Erklärung :
Dieser `DATA _NULL_` Schritt für Schritt öffnet den durch `&dset` (standardmäßig `sashelp.class`) angegebenen Datensatz, ruft die Anzahl der Beobachtungen (`nobs`) über die Funktion `attrn` ab und speichert diese mit `call symput` in einer Makrovariable namens `nobs`.
Kopiert!
1DATA _null_ ;
2 dsid=open("&dset");
3 nobs=attrn(dsid,'nobs');
4 call symput('nobs',strip(put(nobs,8.)));
5RUN;
3 Codeblock
DATA STEP Data
Erklärung :
Dieser Block generiert eine XML-Datei. Zuerst wird der Pfad des Arbeitsverzeichnisses (`work`) abgerufen und in der Makrovariable `pathname` gespeichert. Anschließend wird eine `libname test` vom Typ `xml` einer Datei `temp.xml` in diesem Verzeichnis zugewiesen. Der Inhalt des Datensatzes `&dset` wird nach `test.test` kopiert, wodurch die XML-Datei erstellt wird. Die Libname wird anschließend freigegeben. Schließlich liest ein `DATA _NULL_` die Datei `temp.xml` und zeigt deren Inhalt direkt über `_webout` an.
Kopiert!
1%let pathname=%sysfunc(pathname(work)) ;
2LIBNAME test xml "&pathname/temp.xml" ;
3DATA test.test ;
4 SET &dset ;
5RUN ;
6LIBNAME test ;
7DATA _null_ ;
8 INFILE "&pathname/temp.xml" ;
9 file _webout ;
10 INPUT ;
11 put _infile_ ;
12RUN ;
4 Codeblock
MACRO
Erklärung :
Diese Zeilen definieren die Begrenzer für einen gespeicherten SAS-Prozess. `%STPBEGIN` und `%STPEND` umrahmen den Code, der im Rahmen des gespeicherten Prozesses ausgeführt wird. Die Zeile `*';*\"*/;run;` ist eine Standardsyntax, um potenziell ausstehende Codeblöcke oder Anweisungen zu beenden, und wird oft verwendet, um eine saubere Ausführung im Kontext gespeicherter Prozesse sicherzustellen.
Kopiert!
1%let _result=streamfragment ;
2%STPBEGIN;
3*';*";*/;run;
4%STPEND;
5*';*";*/;RUN;
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.