session

batchresults

Description

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.

session.batchresults result=<nom_variable_resultat> status=<nom_variable_statut> / uuid="string";
Paramètres
ParamètreDescription
uuidSpé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.
Préparation des Données Voir la fiche de ce code dataprep
Création des données initiales

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.

Copié !
1 
2PROC CASUTIL;
3load
4DATA=sashelp.cars outcaslib='casuser' casout='cars' promote;
5 
6QUIT;
7 

Exemples

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.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1 
2PROC CAS;
3ACTION SIMPLE.summary / TABLE='cars', async='job1';
4 
5RUN;
6ACTION
7SESSION.batchresults / uuid=job1.jobid;
8 
9RUN;
10 
11QUIT;
12 
Résultat :
L'action `batchresults` ne retourne pas de table de résultats visible, mais un statut de succès. Le job de l'action `summary` continue de s'exécuter en arrière-plan sur le serveur CAS, et la session client est libérée.

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.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1cas casauto;
2cas casauto2;
3 
4PROC CAS
5SESSION=casauto;
6ACTION regression.logistic / TABLE={name='cars'}, model={depvar='type', effects={'origin', 'cylinders'}}, async='job_reg';
7 
8RUN;
9 
10QUIT;
11 
12PROC CAS
13SESSION=casauto2;
14ACTION
15SESSION.batchresults / uuid=job_reg.jobid;
16 
17RUN;
18 
19QUIT;
20 
21PROC CAS
22SESSION=casauto;
23ACTION
24SESSION.listactionq;
25 
26RUN;
27 
28QUIT;
29 
Résultat :
La première action lance le job. La seconde action (`batchresults`) le détache. La troisième action (`listactionq`) affiche la liste des jobs en attente pour la session `casauto`, qui sera vide, prouvant que le job de régression a été successfully basculé en mode batch et n'est plus géré activement par la session initiale.

FAQ

Quel est l'objectif de l'action `batchresults` ?
Quel est le paramètre requis pour l'action `batchresults` ?
Comment utiliser l'action `batchresults` en CASL ?

Scénarios associés

Cas d'usage
Scénario Standard : Détachement d'un job de segmentation client

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 ...

Cas d'usage
Scénario Performance : Prise de contrôle inter-session d'un job de training volumineux

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...

Cas d'usage
Scénario Cas Limite : Tentative de détachement avec un UUID invalide ou terminé

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...