Los datos se crean directamente en el script a través de pasos `DATA` que generan 100 millones de observaciones aleatorias en tablas temporales, tanto localmente como en la sesión remota. También se utiliza y muestra información del sistema a través del acceso a las macros del sistema SAS (`%sysget`, `&sysuserid`, etc.).
1 Bloque de código
Macros de sistema
Explicación : Este bloque inicializa la opción de cifrado de red SSL. Luego utiliza macros `%put` para mostrar diversa información de entorno y de proceso de la sesión SAS local (cliente), como el ID de usuario, el nombre de host, el ID de proceso, el modo de proceso y el estado de variables de entorno específicas de SAS Viya (`SASCLOUDNATIVE`, `TCPNOIPADDR`, `SAS_SERVICES_URL`).
¡Copiado!
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;
Explicación : Este bloque define variables macro (`_sessionName`, `_sessionType`, `_namespace`, `_casserver`) destinadas a ser utilizadas para una conexión a una sesión CAS. La línea de conexión real a CAS (`cas ...`) está comentada, lo que indica que la conexión no se establece activamente en esta ejecución del script.
¡Copiado!
/* 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 Bloque de código
SAS/CONNECT
Explicación : Este bloque configura los parámetros de conexión para una sesión SAS/CONNECT. Define la macro `host` con la dirección del servidor remoto (se elige un NodePort externo). La declaración `SIGNON` establece la conexión con el servidor remoto utilizando el nombre de usuario 'geladm' y una contraseña explícita. La macro `%syslput` se utiliza para enviar el valor de `_sessionType` a la sesión remota, donde estará accesible a través de `_sessionTypeRemote`.
Explicación : Este bloque `rsubmit` ejecuta el código en la sesión SAS remota. Utiliza macros `%put` similares a las del cliente para mostrar información de entorno y de proceso del servidor remoto. Esto es útil para verificar la configuración y la identidad de la sesión remota.
¡Copiado!
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;
Explicación : Este bloque `DATA STEP` se ejecuta localmente y crea una tabla SAS grande llamada `local` seguida del valor de `_sessionType` (por ejemplo, `localsas9`). La tabla contiene dos variables (`i` y `j`) y se llena con 100 millones de observaciones, siendo `j` un número aleatorio.
¡Copiado!
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 Bloque de código
DATA STEP Data
Explicación : Este bloque `rsubmit` ejecuta el código en la sesión SAS remota. Crea una tabla SAS similar a la del bloque anterior, pero esta vez en el servidor remoto, llamada `remote` seguida del valor de `_sessionTypeRemote`. Después de la creación de los datos, la macro `%sysrput` se utiliza para transferir la ruta del directorio de trabajo (`WORK`) de la sesión remota a una variable macro llamada `rsaswork` en la sesión local.
¡Copiado!
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 Bloque de código
LIBNAME
Explicación : Este bloque muestra primero el valor de la variable macro `rsaswork` (que contiene la ruta del directorio de trabajo remoto). Luego, la declaración `LIBNAME` se utiliza para definir una biblioteca llamada `rsaswork` en la sesión local, apuntando al directorio de trabajo de la sesión remota a través de la conexión SAS/CONNECT establecida. Esto permite que la sesión local acceda a los archivos creados en el espacio de trabajo remoto.
Explicación : Este bloque contiene secciones de código comentadas. La primera sección habría mantenido la sesión remota abierta durante un período de tiempo determinado (`call sleep`). La segunda sección contiene los comandos `signoff _all;` y `cas ... terminate;` que se habrían utilizado para finalizar las sesiones SAS/CONNECT y CAS si se hubieran establecido. Estas líneas se incluyen como ejemplo o referencia, pero no están activas en la ejecución actual del script.
¡Copiado!
/* 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
*/
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.