Les données sont récupérées dynamiquement via un appel à l'API REST de SAS Workload Orchestrator. Le script ne dépend pas de fichiers de données préexistants ou de tables SASHELP.
1 Bloc de code
PROC HTTP
Explication : Ce bloc définit les paramètres de connexion (utilisateur, mot de passe, URL de base) et initialise des fichiers temporaires. Il effectue ensuite un premier appel PROC HTTP avec la méthode POST pour s'authentifier sur l'interface de SAS Grid et récupérer un cookie d'authentification dans le fichier temporaire 'headout'.
Copié !
/* Provide connection information. */
%let username = sas;
%let pw = password;
%let baseURL = http://sgmg-master.demo.sas.com:8901;
/* Initialize temporary files to capture HTTP response body and headers. */
filename body temp;
filename headout temp;
/* Authenticate and get an auth cookie. */
proc http URL="&baseURL/sasgrid/index.html" method="post"
out=body headerout=headout headerout_overwrite
in="username=&username%nrstr(&password)=&pw";
headers "ContentType"="application/x-www-form-urlencoded";
run;
Explication : Ce second appel PROC HTTP utilise l'authentification obtenue précédemment pour interroger l'API des jobs. Il envoie une requête GET pour obtenir tous les jobs non archivés ('state=ALL'). La réponse de l'API, qui est au format JSON, est écrite dans le fichier temporaire 'body'.
Copié !
/* Submit an authenticated query against the jobs API */
/* requesting jobs with a state of "ALL" e.g. any non-archived jobs. */
proc http URL="&baseURL/sasgrid/api/jobs?state=ALL"
out=body headerout=headout headerout_overwrite;
headers "Accept"="application/vnd.sas.sasgrid.jobs;version=1;charset=utf-8";
run;
1
/* Submit an authenticated query against the jobs API */
2
/* requesting jobs with a state of "ALL" e.g. any non-archived jobs. */
Explication : Ce bloc utilise le moteur LIBNAME JSON pour interpréter le contenu du fichier 'body'. Il crée une bibliothèque SAS virtuelle nommée 'jobinfo' dont les tables correspondent aux objets trouvés dans la structure du fichier JSON.
Copié !
/* Deassign the jobinfo libname. */
libname jobinfo;
/* Read in the job info. */
libname jobinfo json fileref=body;
1
/* Deassign the jobinfo libname. */
2
LIBNAME jobinfo;
3
4
/* Read in the job info. */
5
LIBNAME jobinfo json fileref=body;
4 Bloc de code
PROC SQL Data
Explication : Cette procédure SQL crée une table SAS nommée 'jobs' dans la bibliothèque WORK. Elle effectue une jointure sur les tables générées à partir du JSON ('jobinfo.jobs', 'jobinfo.jobs_processinginfo', 'jobinfo.jobs_request') pour consolider les informations pertinentes sur chaque job en une seule table plate.
Copié !
/* Create a single table with items of interest. */
proc sql;
create table jobs as
select
a.id,
b.state, b.queue, b.submitTime, b.startTime,
b.endTime, b.processId, b.executionHost, b.exitCode,
c.name, c.user, c.cmd
from
jobinfo.jobs a,
jobinfo.jobs_processinginfo b,
jobinfo.jobs_request c
where
a.ordinal_jobs = b.ordinal_jobs and
b.ordinal_jobs = c.ordinal_jobs
order by a.id;
quit;
1
/* Create a single table with items of interest. */
Explication : Affiche le contenu de la table 'work.jobs' qui a été créée à l'étape précédente, présentant ainsi le rapport final des jobs.
Copié !
/* Print it. */
proc print data=work.jobs; run;
1
/* Print it. */
2
PROC PRINTDATA=work.jobs; RUN;
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.
Informations de Copyright : Author: Greg Wootton Date: 30AUG2019
« L'utilisation de PROC HTTP pour interroger directement les micro-services de SAS Workload Orchestrator (SWO) est une approche moderne qui permet de s'affranchir des interfaces graphiques pour un monitoring programmatique. Ce script transforme votre session SAS en une console d'administration capable d'extraire en temps réel l'état de la file d'attente (Queues) et la charge des nœuds du cluster. »
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.