Publié le :

Configuration et connexion à une session SAS distante

Ce code est également disponible en : Deutsch English Español
En attente de validation
Attention : Ce code nécessite des droits administrateur.
Le script commence par définir une option d'encryptage réseau pour SSL. Il utilise ensuite plusieurs macros `%put` avec des macros système (`&sysuserid`, `&syshostname`, etc.) pour afficher des informations sur l'environnement d'exécution de la session SAS© locale (client). Des variables pour une session CAS sont définies à des fins de configuration future, bien que la connexion CAS elle-même soit commentée et non active dans cette exécution. Le script procède ensuite à l'établissement d'une connexion SAS©/CONNECT à un hôte distant spécifié, en utilisant un nom d'utilisateur et un mot de passe explicites. Une fois connecté, un bloc `rsubmit` est exécuté sur le serveur distant, affichant des informations système distantes et créant une grande table de données temporaire. Une table de données similaire est également créée localement. Enfin, le script récupère le chemin du répertoire de travail distant (`WORK`) et l'utilise pour définir une libname `rsaswork` dans la session locale, permettant un accès direct aux fichiers créés dans l'espace de travail distant.
Analyse des données

Type : MIXTE


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é !
1OPTIONS NETENCRYPTALGORITHM=SSL;
2 
3%put ********** CLIENT ********;
4%put My local user ID is: &sysuserid;
5%put The local host name is: &syshostname;
6%put The local process name is: &sysprocessname;
7%put The local process ID is: &sysprocessid;
8%put The local process mode is: &sysprocessmode;
9 
10%let SASCLOUDNATIVE_state="%sysget(SASCLOUDNATIVE)";
11%put &SASCLOUDNATIVE_state;
12 
13%let TCPNOIPADDR_state="%sysget(TCPNOIPADDR)";
14%put &TCPNOIPADDR_state;
15 
16%let ENVIRONMENT="%sysget(SAS_SERVICES_URL)";
17%put &ENVIRONMENT;
2 Bloc de code
Macros
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é !
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`.
Copié !
1/* Connect session */
2/* INTERNAL ClusterIP */
3* %let host=sas-connect-spawner 17551;
4/* EXTERNAL NodePort */
5%let host=gelcorp.pdcesx03138.race.sas.com 30377;
6 
7SIGNON host user='geladm' pass='lnxsas';
8%syslput _sessionTypeRemote=&_sessionType;
4 Bloc de code
Macros système
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é !
1rsubmit;
2 %put ********** SERVER ********;
3 %put My remote user ID is: &sysuserid;
4 %put The remote host name is: &syshostname;
5 %put The remote process name is: &sysprocessname;
6 %put The remote process ID is: &sysprocessid;
7 %put The remote process mode is: &sysprocessmode;
8 
9 %let SASCLOUDNATIVE_state="%sysget(SASCLOUDNATIVE)";
10 %put &SASCLOUDNATIVE_state;
11
12 %let TCPNOIPADDR_state="%sysget(TCPNOIPADDR)";
13 %put &TCPNOIPADDR_state;
14
15 %let ENVIRONMENT="%sysget(SAS_SERVICES_URL)";
16 %put &ENVIRONMENT;
17endrsubmit;
5 Bloc de code
DATA STEP Data
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é !
1DATA local&_sessionType;
2 DO i=1 to 100000000;
3 j=ranuni(1234);
4 OUTPUT;
5 END;
6RUN;
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é !
1rsubmit;
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));
12endrsubmit;
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.
Copié !
1%put "&rsaswork";
2LIBNAME rsaswork "&rsaswork" server=host;
3 
8 Bloc de code
Commentaires
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é !
1/* When running as a batch job - need to keep the session open fro fe minutes */
2/*
3rsubmit;
4 data _null_;
5 call sleep(5,60);
6 run;
7endrsubmit;
8*/
9 
10* waitfor _all_;
11 
12 
13/* Close both CAS and connect sessions */
14/*
15cas &_sessionName._&_sessionType terminate;
16signoff _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.