Scénario de test & Cas d'usage
Erstellung eines großen, breiten Datensatzes zur Simulation von Kundendaten für das Churn-Modelltraining.
| 1 | DATA casuser.customer_churn; |
| 2 | call streaminit(456); |
| 3 | array features{50} f1-f50; |
| 4 | DO customer_id = 1 to 200000; |
| 5 | churn = ifn(rand('uniform') < 0.15, 1, 0); |
| 6 | DO i = 1 to 50; |
| 7 | features{i} = rand('normal'); |
| 8 | END; |
| 9 | OUTPUT; |
| 10 | END; |
| 11 | RUN; |
| 1 | cas ds_session name='datasci'; |
| 2 | PROC CAS; |
| 3 | SESSION caslib='casuser'; |
| 4 | decisionTree.dtreeTrain TABLE={name='customer_churn'}, target='churn', inputs='f1-f50', casOut={name='churn_model', replace=true}, _async='model_training'; |
| 5 | RUN; |
| 6 | QUIT; |
| 1 | cas admin_session name='admin'; |
| 2 | PROC CAS; |
| 3 | SESSION.actionstatus RESULT=STATUS job='model_training' SESSION='datasci'; |
| 4 | job_uuid = STATUS.ActionStatus[1, 'JobUUID']; |
| 5 | SESSION.batchresults / uuid=job_uuid; |
| 6 | put 'INFO: Modelltraining-Job ' || job_uuid || ' wurde in den Batch-Modus versetzt.'; |
| 7 | RUN; |
| 8 | QUIT; |
| 1 | PROC CAS SESSION=admin_session; |
| 2 | /* Simuliert das Warten auf den Abschluss des Jobs */ |
| 3 | BUILTINS.sleep / seconds=15; |
| 4 | SESSION.actionstatus RESULT=STATUS uuid=job_uuid; |
| 5 | PRINT STATUS; |
| 6 | RUN; |
| 7 | QUIT; |
| 1 | PROC CAS SESSION=admin_session; |
| 2 | /* In einem realen Szenario würde man den Status überprüfen, bis er 'Completed' ist */ |
| 3 | SESSION.fetchresult RESULT=model_results uuid=job_uuid; |
| 4 | PRINT model_results; |
| 5 | RUN; |
| 6 | QUIT; |
Der Modelltrainingsjob wird erfolgreich in den Batch-Modus versetzt. Die `ds_session` ist sofort wieder verfügbar. Die `actionstatus`-Aktion, die mit der UUID aufgerufen wird, zeigt den Fortschritt des Jobs (z.B. 'Running', dann 'Completed'). Schließlich ruft `fetchresult` die Ergebnisse des Modelltrainings erfolgreich ab, einschließlich der Modellinformationen und Statistiken.