L'action `session.batchresults` permet de détacher une action en cours d'exécution de la session client actuelle. Essentiellement, elle convertit une action synchrone ou asynchrone en un job s'exécutant en mode batch (arrière-plan) sur le serveur CAS. Cela libère la session client, qui peut alors soumettre d'autres actions sans attendre la fin de la première. L'action est identifiée par son UUID (Universal Unique Identifier) de job, qui est retourné lorsqu'une action est lancée de manière asynchrone.
| Paramètre | Description |
|---|---|
| uuid | Spécifie l'UUID (Universal Unique Identifier) du job de l'action à passer en mode batch. Cet identifiant est obtenu lors de l'exécution d'une action en mode asynchrone. |
Cette action ne nécessite pas de jeu de données spécifique pour fonctionner, car elle agit sur des processus (jobs) existants. Cependant, pour illustrer son utilisation, nous chargeons d'abord une table dans CAS qui sera utilisée par une autre action que nous passerons ensuite en mode batch.
| 1 | |
| 2 | PROC CASUTIL; |
| 3 | load |
| 4 | DATA=sashelp.cars outcaslib='casuser' casout='cars' promote; |
| 5 | |
| 6 | QUIT; |
| 7 |
Cet exemple lance une action `summary` de manière asynchrone, récupère son UUID de job, puis utilise `batchresults` pour la détacher de la session. La session client est alors immédiatement disponible pour d'autres tâches.
| 1 | |
| 2 | PROC CAS; |
| 3 | ACTION SIMPLE.summary / TABLE='cars', async='job1'; |
| 4 | |
| 5 | RUN; |
| 6 | ACTION |
| 7 | SESSION.batchresults / uuid=job1.jobid; |
| 8 | |
| 9 | RUN; |
| 10 | |
| 11 | QUIT; |
| 12 |
Cet exemple avancé utilise deux sessions CAS. La première (`casauto`) lance une action de régression logistique de manière asynchrone. La seconde (`casauto2`) prend le contrôle du job via son UUID et le passe en mode batch. On vérifie ensuite dans la première session que le job n'est plus dans la file d'attente des actions actives, confirmant qu'il est bien passé en arrière-plan.
| 1 | cas casauto; |
| 2 | cas casauto2; |
| 3 | |
| 4 | PROC CAS |
| 5 | SESSION=casauto; |
| 6 | ACTION regression.logistic / TABLE={name='cars'}, model={depvar='type', effects={'origin', 'cylinders'}}, async='job_reg'; |
| 7 | |
| 8 | RUN; |
| 9 | |
| 10 | QUIT; |
| 11 | |
| 12 | PROC CAS |
| 13 | SESSION=casauto2; |
| 14 | ACTION |
| 15 | SESSION.batchresults / uuid=job_reg.jobid; |
| 16 | |
| 17 | RUN; |
| 18 | |
| 19 | QUIT; |
| 20 | |
| 21 | PROC CAS |
| 22 | SESSION=casauto; |
| 23 | ACTION |
| 24 | SESSION.listactionq; |
| 25 | |
| 26 | RUN; |
| 27 | |
| 28 | QUIT; |
| 29 |
Un analyste marketing lance un long calcul de segmentation (clustering) sur une base de clients. Pour ne pas bloquer sa session SAS Viya, il souhaite détacher le processus pour ...
Un data scientist lance un entraînement de modèle de machine learning (`forestTrain`) sur des millions de logs de capteurs IoT. Le processus prendra plusieurs heures. Un adminis...
Suite à une erreur de copier-coller ou à un décalage temporel, un utilisateur tente de passer en mode batch un job en utilisant un UUID incorrect, ou l'UUID d'un job qui est déj...