Les données sont créées directement dans le script via des étapes `DATA` qui génèrent 100 millions d'observations aléatoires dans des tables temporaires, à la fois localement et sur la session distante. Des informations système sont également utilisées et affichées via l'accès aux macros système SAS (`%sysget`, `&sysuserid`, etc.).
1 Bloc de code
Macros système
Explication : Ce bloc initialise l'option d'encryptage réseau SSL. Il utilise ensuite des macros `%put` pour afficher diverses informations d'environnement et de processus de la session SAS locale (client), telles que l'ID utilisateur, le nom d'hôte, l'ID de processus, le mode de processus et l'état de variables d'environnement spécifiques à SAS Viya (`SASCLOUDNATIVE`, `TCPNOIPADDR`, `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 macros variables (`_sessionName`, `_sessionType`, `_namespace`, `_casserver`) destinées à être utilisées pour une connexion à une session CAS. La ligne de connexion réelle à CAS (`cas ...`) est commentée, indiquant que la connexion n'est pas activement établie dans cette exécution du script.
Copié !
/* CAS session */
%let _sessionName=&sysuserid;
%let _sessionType=sas9;
%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);
1
/* CAS session */
2
%let _sessionName=&sysuserid;
3
%let _sessionType=sas9;
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);
3 Bloc de code
SAS/CONNECT
Explication : Ce bloc configure les paramètres de connexion pour une session SAS/CONNECT. Il définit la macro `host` avec l'adresse du serveur distant (un NodePort externe est choisi). La déclaration `SIGNON` établit la connexion au serveur distant en utilisant le nom d'utilisateur 'geladm' et un mot de passe explicite. La macro `%syslput` est utilisée pour envoyer la valeur de `_sessionType` à la session distante, où elle sera accessible via `_sessionTypeRemote`.
Explication : Ce bloc `rsubmit` exécute le code sur la session SAS distante. Il utilise des macros `%put` similaires à celles du client pour afficher les informations d'environnement et de processus du serveur distant. Ceci est utile pour vérifier la configuration et l'identité de la session distante.
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` est exécuté localement et crée une grande table SAS nommée `local` suivie de la valeur de `_sessionType` (par exemple, `localsas9`). La table contient deux variables (`i` et `j`) et est remplie de 100 millions d'observations, `j` étant un nombre aléatoire.
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;
6 Bloc de code
DATA STEP Data
Explication : Ce bloc `rsubmit` exécute le code sur la session SAS distante. Il crée une table SAS similaire à celle du bloc précédent, mais cette fois sur le serveur distant, nommée `remote` suivie de la valeur de `_sessionTypeRemote`. Après la création des données, la macro `%sysrput` est utilisée pour transférer le chemin du répertoire de travail (`WORK`) de la session distante vers une macro variable nommée `rsaswork` dans la session locale.
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;
7 Bloc de code
LIBNAME
Explication : Ce bloc affiche d'abord la valeur de la macro variable `rsaswork` (qui contient le chemin du répertoire de travail distant). Ensuite, la déclaration `LIBNAME` est utilisée pour définir une bibliothèque nommée `rsaswork` dans la session locale, pointant vers le répertoire de travail de la session distante via la connexion SAS/CONNECT établie. Cela permet à la session locale d'accéder aux fichiers créés dans l'espace de travail distant.
Explication : Ce bloc contient des sections de code commentées. La première section aurait maintenu la session distante ouverte pendant une période donnée (`call sleep`). La seconde section contient la commande `signoff _all;` et `cas ... terminate;` qui auraient été utilisées pour terminer les sessions SAS/CONNECT et CAS si elles avaient été établies. Ces lignes sont incluses à titre d'exemple ou de référence mais ne sont pas actives dans l'exécution actuelle du script.
Copié !
/* When running as a batch job - need to keep the session open fro fe minutes */
/*
rsubmit;
data _null_;
call sleep(5,60);
run;
endrsubmit;
*/
* waitfor _all_;
/* Close both CAS and connect sessions */
/*
cas &_sessionName._&_sessionType terminate;
signoff _all_;
*/
1
/* When running as a batch job - need to keep the session open fro fe minutes */
2
/*
3
rsubmit;
4
data _null_;
5
call sleep(5,60);
6
run;
7
endrsubmit;
8
*/
9
10
* waitfor _all_;
11
12
13
/* Close both CAS and connect sessions */
14
/*
15
cas &_sessionName._&_sessionType terminate;
16
signoff _all_;
17
*/
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.