Attention : Este código requiere privilegios de administrador.
El procedimiento DMSRVADM se utiliza para administrar el DataFlux Data Management Server. Este ejemplo ilustra cómo obtener un informe de las tareas en curso o terminadas y luego cómo usar la información de este informe (específicamente el identificador de tarea 'jobid') para invocar las funciones DMSrvKillJob y DMSrvDeleteLog. Estas funciones son esenciales para liberar recursos y mantener el orden en el servidor deteniendo procesos no deseados y eliminando los rastros de ejecución.
Análisis de datos
Type : CREACION_INTERNA
Los ejemplos generan datos simulados ('work.joblist') para demostrar las llamadas a funciones sin depender de datos externos preexistentes, o utilizan sesiones CAS simuladas para los ejemplos de Viya.
1 Bloque de código
PROC DMSRVADM / DATA _NULL_ Data
Explicación : Este ejemplo básico muestra cómo usar PROC DMSRVADM para generar un informe de tareas. Luego, un Data Step recorre este informe y simula la llamada a las funciones DMSrvKillJob y DMSrvDeleteLog para cada tarea. Las llamadas reales están comentadas; se utiliza una simple instrucción PUT para la ilustración.
¡Copiado!
data work.joblist;
length jobid $16. status $10.;
input jobid $ status $;
datalines;
JOB001 RUNNING
JOB002 COMPLETED
JOB003 FAILED
JOB004 RUNNING
;
run;
proc dmsrvadm
out=work.jobReport
host='http://myhost.unx.com' port=50001;
run;
data _null_;
set work.joblist;
put 'Simulating kill and delete for JobID: ' jobid;
/* Dans un environnement réel, ces fonctions seraient appelées. Ici, nous les simulons. */
/* kjrc=dmsrvkilljob (jobid, 'http://myhost.unx.com' , 50001); */
/* dlrc=dmsrvdeletelog (jobid, 'http://myhost.unx.com' , 50001); */
if status = 'RUNNING' then put ' ACTION: Tentative d''arrêt de la tâche ' jobid;
put ' ACTION: Tentative de suppression du journal pour la tâche ' jobid;
run;
1
DATA work.joblist;
2
LENGTH jobid $16. STATUS $10.;
3
INPUT jobid $ STATUS $;
4
DATALINES;
5
JOB001 RUNNING
6
JOB002 COMPLETED
7
JOB003 FAILED
8
JOB004 RUNNING
9
;
10
RUN;
11
12
PROC DMSRVADM
13
out=work.jobReport
14
host='http://myhost.unx.com' port=50001;
15
RUN;
16
17
DATA _null_;
18
SET work.joblist;
19
put 'Simulating kill and delete for JobID: ' jobid;
20
/* Dans un environnement réel, ces fonctions seraient appelées. Ici, nous les simulons. */
IFSTATUS = 'RUNNING'THEN put ' ACTION: Tentative d''arrêt de la tâche ' jobid;
24
put ' ACTION: Tentative de suppression du journal pour la tâche ' jobid;
25
RUN;
2 Bloque de código
PROC DMSRVADM / DATA _NULL_ Data
Explicación : Este ejemplo extiende el primero añadiendo una lógica de selección. Después de generar el informe de tareas, el Data Step utiliza una condición 'if status = 'RUNNING'' para dirigirse únicamente a las tareas activas. Esto permite una limpieza más controlada, evitando actuar sobre tareas ya terminadas o pendientes.
¡Copiado!
data work.joblist;
length jobid $16. status $10. description $30.;
input jobid $ status $ description $;
datalines;
JOB001 RUNNING 'Analyse quotidienne'
JOB002 COMPLETED 'Rapport mensuel'
JOB003 FAILED 'Importation de données'
JOB004 RUNNING 'Traitement de nuit'
JOB005 PENDING 'Mise à jour'
;
run;
proc dmsrvadm
out=work.jobReport
host='http://myhost.unx.com' port=50001;
run;
data _null_;
set work.jobReport;
if status = 'RUNNING' then do;
put 'Arrêt et suppression des logs pour la tâche ' jobid ' (Status: ' status ', Description: ' description ')';
/* Ici, dmsrvkilljob et dmsrvdeletelog seraient appelés pour les tâches 'RUNNING' */
/* kjrc=dmsrvkilljob (jobid, 'http://myhost.unx.com' , 50001); */
/* dlrc=dmsrvdeletelog (jobid, 'http://myhost.unx.com' , 50001); */
end;
else do;
put 'Ignoré la tâche ' jobid ' (Status: ' status ')';
end;
run;
1
DATA work.joblist;
2
LENGTH jobid $16. STATUS $10. description $30.;
3
INPUT jobid $ STATUS $ description $;
4
DATALINES;
5
JOB001 RUNNING 'Analyse quotidienne'
6
JOB002 COMPLETED 'Rapport mensuel'
7
JOB003 FAILED 'Importation de données'
8
JOB004 RUNNING 'Traitement de nuit'
9
JOB005 PENDING 'Mise à jour'
10
;
11
RUN;
12
13
PROC DMSRVADM
14
out=work.jobReport
15
host='http://myhost.unx.com' port=50001;
16
RUN;
17
18
DATA _null_;
19
SET work.jobReport;
20
IFSTATUS = 'RUNNING'THENDO;
21
put 'Arrêt et suppression des logs pour la tâche ' jobid ' (Status: 'STATUS', Description: ' description ')';
22
/* Ici, dmsrvkilljob et dmsrvdeletelog seraient appelés pour les tâches 'RUNNING' */
put 'Ignoré la tâche ' jobid ' (Status: 'STATUS')';
28
END;
29
RUN;
3 Bloque de código
PROC DMSRVADM / DATA _NULL_ Data
Explicación : Este ejemplo introduce el uso de macrovariables (%let) para definir el host y el puerto del Data Management Server. Esto hace que el código sea más flexible y fácil de mantener, ya que la información de conexión se puede modificar en un solo lugar. La limpieza se extiende a las tareas 'RUNNING' y 'FAILED'.
¡Copiado!
/* Définition des macro-variables pour l'hôte et le port */
%let DMS_HOST = http://myhost.unx.com;
%let DMS_PORT = 50001;
data work.joblist;
length jobid $16. status $10. description $30.;
input jobid $ status $ description $;
datalines;
JOB001 RUNNING 'Analyse quotidienne'
JOB002 COMPLETED 'Rapport mensuel'
JOB003 FAILED 'Importation de données'
JOB004 RUNNING 'Traitement de nuit'
JOB005 PENDING 'Mise à jour'
;
run;
proc dmsrvadm
out=work.jobReport
host="&DMS_HOST."
port=&DMS_PORT.;
run;
data _null_;
set work.jobReport;
if status in ('RUNNING', 'FAILED') then do;
put 'Traitement de la tâche ' jobid ' (Status: ' status ') sur &DMS_HOST.:&DMS_PORT.';
/* Utilisation des macro-variables dans les fonctions simulées */
/* kjrc=dmsrvkilljob (jobid, "&DMS_HOST." , &DMS_PORT.); */
/* dlrc=dmsrvdeletelog (jobid, "&DMS_HOST." , &DMS_PORT.); */
end;
run;
%mend;
1
/* Définition des macro-variables pour l'hôte et le port */
2
%let DMS_HOST = http://myhost.unx.com;
3
%let DMS_PORT = 50001;
4
5
DATA work.joblist;
6
LENGTH jobid $16. STATUS $10. description $30.;
7
INPUT jobid $ STATUS $ description $;
8
DATALINES;
9
JOB001 RUNNING 'Analyse quotidienne'
10
JOB002 COMPLETED 'Rapport mensuel'
11
JOB003 FAILED 'Importation de données'
12
JOB004 RUNNING 'Traitement de nuit'
13
JOB005 PENDING 'Mise à jour'
14
;
15
RUN;
16
17
PROC DMSRVADM
18
out=work.jobReport
19
host="&DMS_HOST."
20
port=&DMS_PORT.;
21
RUN;
22
23
DATA _null_;
24
SET work.jobReport;
25
IFSTATUS in ('RUNNING', 'FAILED') THENDO;
26
put 'Traitement de la tâche ' jobid ' (Status: 'STATUS') sur &DMS_HOST.:&DMS_PORT.';
27
/* Utilisation des macro-variables dans les fonctions simulées */
Explicación : Este ejemplo propone un escenario en el que se desearía limpiar registros no del DataFlux Data Management Server, sino de sesiones o servicios CAS. Dado que DMSRVADM no es un procedimiento CAS, el ejemplo es conceptual y simula la creación de datos de registros CAS, y luego la llamada hipotética a una acción CAS ('logmanagement.cleanupLogs') que sería responsable de la limpieza de los registros inactivos. Esto demuestra el enfoque y la lógica de gestión de recursos en un entorno Viya/CAS, incluso si las herramientas específicas de limpieza pueden variar.
¡Copiado!
/* Cet exemple est conceptuel et simule une approche de gestion des journaux */
/* dans un environnement SAS Viya/CAS, bien que DMSrvAdmin soit spécifique à DataFlux. */
/* Il illustre l'idée de nettoyer des ressources via des actions CAS si un service */
/* de nettoyage des journaux CAS était disponible ou pouvait être orchestré. */
/* Connexion à une session CAS (si non déjà connectée) */
/* options casopts=(cascertpath="/opt/sas/viya/config/etc/certs/trustedcerts.pem"); */
/* cas casauto; */
/* Création d'une table simulée de journaux CAS */
data casuser.caslogs;
length logname $50. logsize num status $10.;
input logname $ logsize status $;
datalines;
/cas/logs/session1.log 1024 ACTIVE
/cas/logs/session2.log 2048 INACTIVE
/cas/logs/old/session3.log 512 INACTIVE
/cas/logs/corrupted.log 0 ERROR
;
run;
/* Utilisation de PROC CAS pour appeler une action simulant le nettoyage */
/* Imaginez une action CAS 'logmanagement.cleanupLogs' */
proc casutil;
load data=casuser.caslogs outcaslib="casuser" replace;
run;
proc cas;
/* Simulation d'une action CAS pour nettoyer les journaux inactifs */
/* work.logmanagement.cleanupLogs / details=casuser.caslogs filter='status="INACTIVE"' */
/* output table=casuser.cleanedlogs; */
print 'Simulating CAS log cleanup for INACTIVE logs from casuser.caslogs...';
action table.fetch / table={name='caslogs', caslib='casuser'} sortBy={'logname'};
run;
data _null_;
set casuser.caslogs;
if status = 'INACTIVE' then
put 'ACTION CAS (simulé): Suppression du journal inactif ' logname;
run;
/* Terminer la session CAS si elle a été démarrée ici */
/* cas term; */
1
/* Cet exemple est conceptuel et simule une approche de gestion des journaux */
2
/* dans un environnement SAS Viya/CAS, bien que DMSrvAdmin soit spécifique à DataFlux. */
3
/* Il illustre l'idée de nettoyer des ressources via des actions CAS si un service */
4
/* de nettoyage des journaux CAS était disponible ou pouvait être orchestré. */
5
6
/* Connexion à une session CAS (si non déjà connectée) */
put 'ACTION CAS (simulé): Suppression du journal inactif ' logname;
41
RUN;
42
43
/* Terminer la session CAS si elle a été démarrée ici */
44
/* cas term; */
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.