Attention : Ce code nécessite des droits administrateur.
La procédure DMSRVADM est utilisée pour administrer le DataFlux Data Management Server. Cet exemple illustre comment obtenir un rapport des tâches en cours ou terminées, puis comment se servir des informations de ce rapport (spécifiquement l'identifiant de tâche 'jobid') pour invoquer les fonctions DMSrvKillJob et DMSrvDeleteLog. Ces fonctions sont essentielles pour libérer des ressources et maintenir l'ordre sur le serveur en stoppant les processus indésirables et en effaçant les traces d'exécution.
Analyse des données
Type : CREATION_INTERNE
Les exemples génèrent des données simulées ('work.joblist') pour démonstrer les appels de fonction sans dépendre de données externes préexistantes, ou utilisent des sessions CAS simulées pour les exemples Viya.
1 Bloc de code
PROC DMSRVADM / DATA _NULL_ Data
Explication : Cet exemple de base montre comment utiliser PROC DMSRVADM pour générer un rapport de tâches. Ensuite, un Data Step parcourt ce rapport et simule l'appel des fonctions DMSrvKillJob et DMSrvDeleteLog pour chaque tâche. Les appels réels sont commentés, une simple instruction PUT est utilisée pour l'illustration.
Copié !
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 Bloc de code
PROC DMSRVADM / DATA _NULL_ Data
Explication : Cet exemple étend le premier en ajoutant une logique de sélection. Après avoir généré le rapport de tâches, le Data Step utilise une condition 'if status = 'RUNNING'' pour cibler uniquement les tâches actives. Cela permet un nettoyage plus contrôlé, en évitant d'agir sur des tâches déjà terminées ou en attente.
Copié !
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 Bloc de code
PROC DMSRVADM / DATA _NULL_ Data
Explication : Cet exemple introduit l'utilisation de macro-variables (%let) pour définir l'hôte et le port du Data Management Server. Cela rend le code plus flexible et facile à maintenir, car les informations de connexion peuvent être modifiées à un seul endroit. Le nettoyage est étendu aux tâches 'RUNNING' et 'FAILED'.
Copié !
/* 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 */
Explication : Cet exemple propose un scénario où l'on souhaiterait nettoyer des journaux non pas du DataFlux Data Management Server, mais de sessions ou services CAS. Puisque DMSRVADM n'est pas une procédure CAS, l'exemple est conceptuel et simule la création de données de journaux CAS, puis l'appel hypothétique d'une action CAS ('logmanagement.cleanupLogs') qui serait responsable du nettoyage des journaux inactifs. Cela démontre l'approche et la logique de gestion des ressources dans un environnement Viya/CAS même si les outils spécifiques de nettoyage peuvent varier.
Copié !
/* 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; */
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.