Die Daten werden intern im Skript mithilfe von DATA STEPs generiert, die zwei separate Tabellen (eine lokale und eine entfernte) erstellen, jede mit 100 Millionen Beobachtungen und einer zufälligen numerischen Variable.
1 Codeblock
MACRO
Erklärung : Dieser Block initialisiert die Option `NETENCRYPTALGORITHM` auf `SSL` für die Netzwerksicherheit. Anschließend werden verschiedene Informationen über die lokale Client-Laufzeitumgebung angezeigt, wie z. B. Benutzer-ID, Hostname, Prozessname und -ID sowie dessen Modus. Außerdem werden der Status der Umgebungsvariablen `SASCLOUDNATIVE`, `TCPNOIPADDR` und `SAS_SERVICES_URL` abgerufen und angezeigt.
Kopiert!
OPTIONS NETENCRYPTALGORITHM=SSL;
%put ********** CLIENT ********;
%put My local user ID is: &sysuserid;
%put The local host name is: &syshostname;
%put The local process name is: &sysprocessname;
%put The local process ID is: &sysprocessid;
%put The local process mode is: &sysprocessmode;
%let SASCLOUDNATIVE_state="%sysget(SASCLOUDNATIVE)";
%put &SASCLOUDNATIVE_state;
%let TCPNOIPADDR_state="%sysget(TCPNOIPADDR)";
%put &ENVIRONMENT="%sysget(SAS_SERVICES_URL)";
%put &ENVIRONMENT;
Erklärung : Dieser Block definiert Makrovariablen zur Konfiguration einer CAS-Sitzung, einschließlich des Sitzungsnamens, des Typs, des Namensraums und des CAS-Servers. Anschließend wird eine CAS-Sitzung mit den angegebenen Parametern gestartet. Danach wird der Host für eine SAS/CONNECT-Verbindung (mit Optionen für eine interne Cluster-IP oder einen externen NodePort) definiert und eine SAS/CONNECT-Sitzung zum entfernten Server unter Verwendung eines definierten Benutzers und Passworts hergestellt. Schließlich wird die Makrovariable `_sessionType` über `%syslput` an die entfernte Sitzung übergeben.
Kopiert!
/* CAS session */
%let _sessionName=&sysuserid;
%let _sessionType=batch;
%let _namespace=gelcorp;
%let _casserver=default;
/* Start a CAS session on the cas-shared-&_casserver CAS server */
cas &_sessionName._&_sessionType host="controller.sas-cas-server-&_casserver..&_namespace..svc.cluster.local" port=5570 sessopts=(metrics=true);
/* Connect session */
/* INTERNAL ClusterIP */
%let host=sas-connect-spawner 17551;
/* EXTERNAL NodePort */
* %let host=gelcorp.pdcesx03138.race.sas.com 30377;
SIGNON host user='geladm' pass='lnxsas';
%syslput _sessionTypeRemote=&_sessionType;
1
/* CAS session */
2
%let _sessionName=&sysuserid;
3
%let _sessionType=batch;
4
%let _namespace=gelcorp;
5
%let _casserver=default;
6
7
/* Start a CAS session on the cas-shared-&_casserver CAS server */
8
cas &_sessionName._&_sessionType host="controller.sas-cas-server-&_casserver..&_namespace..svc.cluster.local" port=5570 sessopts=(metrics=true);
Erklärung : Dieser Block wird auf dem Remote-Server über `RSUBMIT` ausgeführt. Er zeigt Informationen an, die denen des Clients ähneln, jedoch für die Umgebung des Remote-Servers, wie Benutzer-ID, Host, Name und Prozess-ID sowie dessen Modus. Er ruft auch den Status der Umgebungsvariablen `SASCLOUDNATIVE`, `TCPNOIPADDR` und `SAS_SERVICES_URL` auf dem Server ab und zeigt ihn an.
Kopiert!
rsubmit;
%put ********** SERVER ********;
%put My remote user ID is: &sysuserid;
%put The remote host name is: &syshostname;
%put The remote process name is: &sysprocessname;
%put The remote process ID is: &sysprocessid;
%put The remote process mode is: &sysprocessmode;
%let SASCLOUDNATIVE_state="%sysget(SASCLOUDNATIVE)";
%put &SASCLOUDNATIVE_state;
%let TCPNOIPADDR_state="%sysget(TCPNOIPADDR)";
%put &TCPNOIPADDR_state;
%let ENVIRONMENT="%sysget(SAS_SERVICES_URL)";
%put &ENVIRONMENT;
endrsubmit;
Erklärung : Dieser DATA STEP-Block erstellt eine SAS-Tabelle namens `localbatch` (wobei `&_sessionType` 'batch' ist) in der lokalen Arbeitsbibliothek. Diese Tabelle wird mit 100 Millionen Beobachtungen generiert, wobei jede einen Index `i` und eine Variable `j` enthält, die mit Zufallszahlen gefüllt ist.
Kopiert!
data local&_sessionType;
do i=1 to 100000000;
j=ranuni(1234);
output;
end;
run;
1
DATA local&_sessionType;
2
DO i=1 to 100000000;
3
j=ranuni(1234);
4
OUTPUT;
5
END;
6
RUN;
5 Codeblock
DATA STEP / MACRO (via RSUBMIT) Data
Erklärung : Dieser Block, der über `RSUBMIT` auf dem Remote-Server ausgeführt wird, zeigt zuerst den Typ der Remote-Sitzung an. Anschließend erstellt er eine SAS-Tabelle namens `remotebatch` in der Arbeitsbibliothek des Remote-Servers, ähnlich der lokalen Tabelle, mit 100 Millionen Zufallsbeobachtungen. Schließlich verwendet er `%sysrput`, um den Pfad zur Arbeitsbibliothek des Remote-Servers an die lokale Sitzung zurückzugeben, gespeichert in der Makrovariable `rsaswork`.
Kopiert!
rsubmit;
%put &_sessionTypeRemote;
data remote&_sessionTypeRemote;
do i=1 to 100000000;
j=ranuni(1234);
output;
end;
run;
%sysrput rsaswork=%sysfunc(pathname(work));
endrsubmit;
1
rsubmit;
2
%put &_sessionTypeRemote;
3
4
DATA remote&_sessionTypeRemote;
5
DO i=1 to 100000000;
6
j=ranuni(1234);
7
OUTPUT;
8
END;
9
RUN;
10
11
%sysrput rsaswork=%sysfunc(pathname(work));
12
endrsubmit;
6 Codeblock
LIBNAME
Erklärung : Dieses Block zeigt den Pfad der Remote-Arbeitsbibliothek an. Anschließend wird eine `LIBNAME`-Anweisung verwendet, um eine Verknüpfung `rsaswork` in der lokalen SAS-Sitzung zu erstellen, die über die SAS/CONNECT-Verbindung (`server=host`) auf den Pfad der Remote-Arbeitsbibliothek (`&rsaswork`) verweist. Dies ermöglicht der lokalen Sitzung den direkten Zugriff auf die im Arbeitsverzeichnis des Remote-Servers gespeicherten Daten.
Erklärung : Ausgeführt auf dem Remote-Server via `RSUBMIT`, verwendet dieser `DATA _NULL_`-Block die Funktion `CALL SLEEP` um die Remote-Sitzung für 5 Minuten (300 Sekunden) zu pausieren. Dies ist nützlich, um die Sitzung aktiv zu halten, insbesondere in Stapelverarbeitungsumgebungen, wo die Sitzung sonst vorzeitig beendet werden könnte.
Kopiert!
rsubmit;
data _null_;
call sleep(5,60);
run;
endrsubmit;
1
rsubmit;
2
DATA _null_;
3
call sleep(5,60);
4
RUN;
5
endrsubmit;
8 Codeblock
CAS / SAS/CONNECT
Erklärung : Dieser Block gewährleistet das ordnungsgemäße Beenden offener Sitzungen. Er beendet die CAS-Sitzung, die durch `&_sessionName._&_sessionType` spezifiziert ist, und verwendet `SIGNOFF _ALL_`, um alle aktiven SAS/CONNECT-Sitzungen zu trennen.
Kopiert!
* waitfor _all_;
/* Close both CAS and connect sessions */
cas &_sessionName._&_sessionType terminate;
signoff _all_;
1
* waitfor _all_;
2
3
4
/* Close both CAS and connect sessions */
5
cas &_sessionName._&_sessionType terminate;
6
signoff _all_;
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.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.