?>
Die Aktion `batchresults` ermöglicht es, eine laufende Aktion, die in einer anderen Sitzung ausgeführt wird, in den Batch-Modus zu versetzen. Dies ist besonders nützlich für lang andauernde Aktionen, da der Client nicht auf den Abschluss der Aktion warten muss. Stattdessen wird die Aktion im Hintergrund weiter ausgeführt, und die Ergebnisse können zu einem späteren Zeitpunkt mit der Aktion `fetchresult` abgerufen werden.
| Parameter | Beschreibung |
|---|---|
| uuid | Gibt die eindeutige Kennung (UUID) der Aktion an, die in den Batch-Modus versetzt werden soll. Diese UUID wird zurückgegeben, wenn eine Aktion asynchron gestartet wird. |
Die folgenden Beispiele verwenden die Tabelle `cars` aus der `SASHELP`-Bibliothek. Diese Tabelle wird in die `CASUSER`-Caslib geladen, um sie in den Beispielen zu verwenden.
1 PROC casutil; 2 load DATA=sashelp.cars outcaslib='casuser' casout='cars' replace; 3 QUIT;
Dieses Beispiel zeigt, wie man eine lang andauernde Aktion (hier eine einfache Zusammenfassung, die 5 Sekunden lang pausiert, um eine lange Laufzeit zu simulieren) in einer Sitzung asynchron startet und dann von einer anderen Sitzung aus mit `batchresults` in den Batch-Modus umschaltet.
| 1 | /* Sitzung 1: Starten Sie eine lang andauernde Aktion asynchron */ |
| 2 | sess1 = CAS.SESSION(); |
| 3 | CAS.BUILTINS.sleep(sess1, seconds=5, _async='job1'); |
| 4 | |
| 5 | /* Sitzung 2: Holen Sie sich die Job-UUID und schalten Sie sie in den Batch-Modus */ |
| 6 | sess2 = CAS.SESSION(); |
| 7 | STATUS = CAS.SESSION.actionstatus(sess2, job='job1'); |
| 8 | job_uuid = STATUS['ActionStatus']['jobUuid'][1]; |
| 9 | CAS.SESSION.batchresults(sess2, uuid=job_uuid); |
| 10 | |
| 11 | CAS.SESSION.endsession(sess1); |
| 12 | CAS.SESSION.endsession(sess2); |
Dieses Beispiel demonstriert einen vollständigen Workflow. Zuerst wird eine `simple.summary`-Aktion asynchron gestartet. Dann wird ihre UUID verwendet, um sie mit `batchresults` in den Batch-Modus zu versetzen. Schließlich wird `actionstatus` verwendet, um den Status zu überprüfen, und `fetchresult`, um die Ergebnisse abzurufen, sobald die Aktion abgeschlossen ist.
| 1 | /* Sitzung 1: Starten Sie eine Analyseaktion asynchron */ |
| 2 | sess1 = CAS.SESSION(name='s1'); |
| 3 | CAS.SIMPLE.summary(sess1, TABLE='cars', _async='summary_job'); |
| 4 | |
| 5 | /* Sitzung 2: Finden Sie den Job, schalten Sie ihn in den Batch-Modus und rufen Sie die Ergebnisse ab */ |
| 6 | sess2 = CAS.SESSION(name='s2'); |
| 7 | STATUS = CAS.SESSION.actionstatus(sess2, SESSION='s1', job='summary_job'); |
| 8 | job_uuid = STATUS['ActionStatus']['jobUuid'][1]; |
| 9 | PRINT('Job UUID: ' || job_uuid); |
| 10 | |
| 11 | /* In den Batch-Modus umschalten */ |
| 12 | CAS.SESSION.batchresults(sess2, uuid=job_uuid); |
| 13 | |
| 14 | /* Warten Sie, bis die Aktion abgeschlossen ist (simuliert durch sleep) */ |
| 15 | CAS.BUILTINS.sleep(seconds=10); |
| 16 | |
| 17 | /* Ergebnisse abrufen */ |
| 18 | results = CAS.SESSION.fetchresult(sess2, uuid=job_uuid); |
| 19 | PRINT(results); |
| 20 | |
| 21 | CAS.SESSION.endsession(sess1); |
| 22 | CAS.SESSION.endsession(sess2); |