?> batchresults - WeAreCAS
session

batchresults

Descripción

Cambia una acción que se está ejecutando actualmente de modo síncrono a modo de lote (asíncrono). Esto permite que la sesión del cliente se libere y ejecute otras tareas sin esperar a que la acción original, a menudo de larga duración, se complete. La acción original continúa procesándose en segundo plano en el servidor CAS.

session.batchresults <result=results> <status=rc> / uuid="string";
Parámetros
ParámetroDescripción
uuidEspecifica el identificador universal único (UUID) de la sesión que contiene la acción que se cambiará a modo de lote. Este es un parámetro obligatorio.
Preparación de datos
No se requiere creación de datos específica

La acción `batchresults` no opera sobre una tabla CAS directamente, sino sobre una sesión CAS existente y su trabajo en ejecución. Por lo tanto, no es necesario cargar o crear datos para utilizar esta acción. El requisito principal es tener una acción ejecutándose en una sesión cuyo UUID se conozca.

/* No se necesita código de preparación de datos. La acción opera sobre el estado de la sesión. */

Ejemplos

Este ejemplo muestra cómo cambiar una acción que se está ejecutando en otra sesión a modo de lote. Se asume que se conoce el UUID de la sesión de destino y se proporciona como una cadena de texto.

Código SAS® / CAS
¡Copiado!
1PROC CAS; SESSION.batchresults uuid="a1b2c3d4-e5f6-7890-1234-567890abcdef"; RUN;
Resultado :
La acción que se estaba ejecutando en la sesión con el UUID especificado ahora se procesará en segundo plano (modo de lote). La sesión actual ya no esperará a que se complete y se pueden enviar nuevas acciones. No se devuelve ninguna tabla de resultados, pero el estado de la operación se reflejará en el log.

En este escenario, primero iniciamos una nueva sesión CAS (`long_running_session`) y ejecutamos una acción que consume mucho tiempo (simulada aquí con `builtins.sleep`). Luego, desde nuestra sesión principal, usamos la acción `listSessions` para encontrar el UUID de `long_running_session` y finalmente usamos `batchresults` para pasar la acción de suspensión a segundo plano.

Código SAS® / CAS
¡Copiado!
1PROC CAS;
2 
3/* 1. Iniciar una nueva sesión y una acción de larga duración de forma asíncrona para obtener su UUID. */
4 SESSION sessTwo;
5 ACTION BUILTINS.sleep / seconds=120 async='sleepJob';
6 
7/* 2. Obtener el UUID de la sesión 'sessTwo' */
8 listSessions RESULT=r;
9 string sessTwoUuid = r.SESSION.UUID[2]; /* Suponiendo que es la segunda sesión en la lista */
10 PRINT 'El UUID de la sesión de destino es: ' sessTwoUuid;
11 
12/* 3. Usar el UUID obtenido para cambiar la acción a modo de lote */
13 SESSION.batchresults uuid=sessTwoUuid;
14 
15RUN;
Resultado :
Después de ejecutar este código, la acción `builtins.sleep` continuará ejecutándose en el servidor en la sesión `sessTwo`, pero la sesión principal del cliente quedará libre inmediatamente después de la llamada a `batchresults`. El log mostrará el UUID de la sesión de destino y la confirmación de la acción `batchresults`, permitiendo que el flujo de trabajo principal continúe sin esperar los 120 segundos.

FAQ

¿Cuál es el propósito de la acción `batchresults`?
¿Qué parámetro es obligatorio para la acción `batchresults`?
¿Cómo se puede cambiar una acción a modo de lote en una sesión diferente?