Scénario de test & Cas d'usage
Gestión del estado de la sesión CAS.
Descubrir todas las acciones de sessionCreación de tres tablas de ejemplo (ventas, clientes, productos) para simular una carga ETL.
| 1 | |
| 2 | DATA ventas_2023; |
| 3 | LENGTH region $20; |
| 4 | DO i=1 to 100000; |
| 5 | region='Norte'; |
| 6 | ventas=rand('UNIFORM')*1000; |
| 7 | OUTPUT; |
| 8 | END; |
| 9 | |
| 10 | RUN; |
| 11 | DATA clientes_activos; |
| 12 | LENGTH STATUS $10; |
| 13 | DO i=1 to 50000; |
| 14 | STATUS='Activo'; |
| 15 | cliente_id=i; |
| 16 | OUTPUT; |
| 17 | END; |
| 18 | |
| 19 | RUN; |
| 20 | DATA catalogo_productos; |
| 21 | LENGTH categoria $30; |
| 22 | DO i=1 to 1000; |
| 23 | categoria='Electrónica'; |
| 24 | producto_id=i; |
| 25 | OUTPUT; |
| 26 | END; |
| 27 | |
| 28 | RUN; |
| 29 |
| 1 | PROC CASUTIL; |
| 2 | SESSION casauto; |
| 3 | load DATA=work.ventas_2023 out=ventas_2023 replace; |
| 4 | load DATA=work.clientes_activos out=clientes_activos replace; |
| 5 | load DATA=work.catalogo_productos out=catalogo_productos replace; |
| 6 | QUIT; |
| 1 | PROC CAS; |
| 2 | SESSION casauto; |
| 3 | async 'job_ventas', TABLE.partition / TABLE={name='ventas_2023'}, casout={name='ventas_part', replace=true}; |
| 4 | async 'job_clientes', TABLE.partition / TABLE={name='clientes_activos'}, casout={name='clientes_part', replace=true}; |
| 5 | async 'job_productos', TABLE.partition / TABLE={name='catalogo_productos'}, casout={name='productos_part', replace=true}; |
| 6 | QUIT; |
| 1 | PROC CAS; |
| 2 | SESSION casauto; |
| 3 | SESSION.sessionId RESULT=r_sess; |
| 4 | uuid_actual = r_sess.SESSION; |
| 5 | PRINT 'Monitoreando todos los trabajos para el UUID:' uuid_actual; |
| 6 | SESSION.actionStatus / uuid=uuid_actual; |
| 7 | |
| 8 | /* Esperar a que todos los trabajos finalicen */ |
| 9 | waitfor _all_; |
| 10 | |
| 11 | PRINT 'Verificando estado final de todos los trabajos:'; |
| 12 | SESSION.actionStatus / uuid=uuid_actual; |
| 13 | QUIT; |
La primera llamada a `actionstatus` debe listar las tres acciones `table.partition` con su estado actual (probablemente 'En ejecución'). La segunda llamada, después de `waitfor _all_`, debe mostrar las tres acciones con el estado 'Completada', validando que `actionstatus` puede monitorear múltiples trabajos simultáneamente en una sesión.