?>Array ( [lang] => es [id] => 53 )
Scénario de test & Cas d'usage
Creación de tres tablas de ejemplo (ventas, clientes, productos) para simular una carga ETL.
| 1 | DATA ventas_2023; LENGTH region $20; DO i=1 to 100000; region='Norte'; ventas=rand('UNIFORM')*1000; OUTPUT; END; RUN; |
| 2 | DATA clientes_activos; LENGTH STATUS $10; DO i=1 to 50000; STATUS='Activo'; cliente_id=i; OUTPUT; END; RUN; |
| 3 | DATA catalogo_productos; LENGTH categoria $30; DO i=1 to 1000; categoria='Electrónica'; producto_id=i; OUTPUT; END; RUN; |
| 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.