Les données sont générées de manière interne dans le script à l'aide de DATA STEPs qui créent deux tables distinctes (une locale et une distante), chacune avec 100 millions d'observations et une variable numérique aléatoire.
1 Bloc de code
MACRO
Explication : Ce bloc initialise l'option `NETENCRYPTALGORITHM` à `SSL` pour la sécurité réseau. Il affiche ensuite diverses informations sur l'environnement d'exécution local du client, telles que l'ID utilisateur, le nom d'hôte, le nom et l'ID du processus, ainsi que son mode. Il récupère et affiche également l'état des variables d'environnement `SASCLOUDNATIVE`, `TCPNOIPADDR` et `SAS_SERVICES_URL`.
Copié !
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 &TCPNOIPADDR_state;
%let ENVIRONMENT="%sysget(SAS_SERVICES_URL)";
%put &ENVIRONMENT;
Explication : Ce bloc définit des variables macro pour configurer une session CAS, y compris le nom de la session, le type, le namespace et le serveur CAS. Il démarre ensuite une session CAS avec les paramètres spécifiés. Ensuite, il définit l'hôte pour une connexion SAS/CONNECT (avec des options pour une IP de cluster interne ou un NodePort externe) et établit une session SAS/CONNECT au serveur distant en utilisant un utilisateur et un mot de passe définis. Enfin, il transmet la variable macro `_sessionType` à la session distante via `%syslput`.
Copié !
/* 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);
Explication : Ce bloc est exécuté sur le serveur distant via `RSUBMIT`. Il affiche des informations similaires à celles du client mais pour l'environnement du serveur distant, telles que l'ID utilisateur, l'hôte, le nom et l'ID du processus, ainsi que son mode. Il récupère et affiche également l'état des variables d'environnement `SASCLOUDNATIVE`, `TCPNOIPADDR` et `SAS_SERVICES_URL` sur le serveur.
Copié !
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;
Explication : Ce bloc DATA STEP crée une table SAS nommée `localbatch` (où `&_sessionType` est 'batch') dans la bibliothèque de travail locale. Cette table est générée avec 100 millions d'observations, chacune contenant un index `i` et une variable `j` remplie de nombres aléatoires.
Copié !
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 Bloc de code
DATA STEP / MACRO (via RSUBMIT) Data
Explication : Ce bloc exécuté via `RSUBMIT` sur le serveur distant, affiche d'abord le type de session distante. Il crée ensuite une table SAS nommée `remotebatch` dans la bibliothèque de travail du serveur distant, similaire à la table locale, avec 100 millions d'observations aléatoires. Enfin, il utilise `%sysrput` pour renvoyer le chemin d'accès à la bibliothèque de travail du serveur distant à la session locale, stocké dans la variable macro `rsaswork`.
Copié !
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 Bloc de code
LIBNAME
Explication : Ce bloc affiche le chemin de la bibliothèque de travail distante. Il utilise ensuite une instruction `LIBNAME` pour créer un raccourci `rsaswork` dans la session SAS locale, qui pointe vers le chemin de la bibliothèque de travail distante (`&rsaswork`) en utilisant la connexion SAS/CONNECT (`server=host`). Cela permet à la session locale d'accéder directement aux données stockées dans le répertoire de travail du serveur distant.
Explication : Exécuté sur le serveur distant via `RSUBMIT`, ce bloc `DATA _NULL_` utilise la fonction `CALL SLEEP` pour mettre la session distante en pause pendant 5 minutes (300 secondes). Ceci est utile pour maintenir la session active, notamment dans les environnements de traitement par lots où la session pourrait autrement se terminer prématurément.
Copié !
rsubmit;
data _null_;
call sleep(5,60);
run;
endrsubmit;
1
rsubmit;
2
DATA _null_;
3
call sleep(5,60);
4
RUN;
5
endrsubmit;
8 Bloc de code
CAS / SAS/CONNECT
Explication : Ce bloc assure la fermeture propre des sessions ouvertes. Il termine la session CAS spécifiée par `&_sessionName._&_sessionType` et utilise `SIGNOFF _ALL_` pour déconnecter toutes les sessions SAS/CONNECT actives.
Copié !
* 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_;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.