Publié le :

Extraction des chemins sources des Jobs depuis les métadonnées

Ce code est également disponible en : Deutsch English Español
En attente de validation
Attention : Ce code nécessite des droits administrateur.
Ce programme se connecte à un serveur de métadonnées SAS© 9 (via les options `metaserver`, `metaport`, etc.) pour inventorier tous les objets de type 'Job'. Pour chaque Job trouvé, il navigue dans les associations de métadonnées pour identifier le fichier de code source associé ('SourceCode') et son répertoire parent ('Directories'), afin de reconstruire le chemin complet du fichier.
Analyse des données

Type : EXTERNE


Les données proviennent du SAS Metadata Server (SAS 9). Le script utilise les fonctions d'interface de métadonnées (`metadata_resolve`, `metadata_getnobj`, `metadata_getattr`, `metadata_getnasn`) pour extraire les informations.

1 Bloc de code
OPTIONS
Explication :
Configuration de la connexion vers le serveur de métadonnées SAS 9. Les identifiants (ici 'sasadm') et l'adresse du serveur sont spécifiés pour permettre l'interrogation.
Copié !
1options metaserver="meta.demo.sas.com"
2 metaport=8561
3 metauser="sasadm @saspw"
4 metapass="password"
5 metarepository=Foundation
6 metaprotocol=bridge;
2 Bloc de code
DATA STEP Data
Explication :
Étape Data principale qui effectue l'extraction. Elle initialise une recherche sur les objets 'Job' (Note: la chaîne de recherche `omsobj:Job?...` semble contenir un artefact d'injection de fichier dans le prompt original, remplaçant probablement `@Id`). Elle boucle ensuite sur chaque job trouvé pour récupérer son nom, l'objet fichier source lié, puis le répertoire de ce fichier, concaténant le tout pour former le chemin `source`.
Copié !
1DATA SOURCE;
2 
3 keep job_name SOURCE; /* Retain only the job name and it's source code full path. */
4 
5/* Initialize variables. */
6 
7 LENGTH type id job_uri job_name file_uri file_name dir_uri path $ 50;
8 call missing (of _character_);
9 
10 obj="omsobj:Job? @code_sas_json/_render_idcolumn.json contains '.'"; /* Search critera for Jobs. */
11 
12 job_count=metadata_resolve(obj,type,id); /* Count all jobs. Only run loop if jobs exist. */
13 
14 IF job_count > 0 THEN DO i=1 to job_count; /* Loop: For each job found, get attributes and associations. */
15 rc=metadata_getnobj(obj,i,job_uri);
16 rc=metadata_getattr(job_uri,"Name",job_name); /* Get job name. */
17 rc=metadata_getnasn(job_uri,"SourceCode",1,file_uri); /* Get file Metadata object id. */
18 rc=metadata_getattr(file_uri,"Name",file_name); /* Get file name. */
19 rc=metadata_getnasn(file_uri,"Directories",1,dir_uri); /* Get directory Metadata object id. */
20 rc=metadata_getattr(dir_uri,"DirectoryName",path); /* Get path to directory. */
21 SOURCE=catx('/',path,file_name); /* combine directory path and file name to create full path to file.*/
22 OUTPUT;
23 END; /* End loop. */
24 ELSE put "WARN: No jobs found in Metadata."; /* If no jobs are found, write a message to the log. */
25RUN;
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 : Copyright © 2023, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.


Banner
Le Conseil de l'Expert
Expert
Michael
Responsable de l'infrastructure Viya.
« L'extraction programmatique des chemins sources des Jobs SAS Data Integration est une tâche critique pour tout administrateur souhaitant cartographier son patrimoine applicatif ou préparer une migration. Ce script illustre parfaitement la puissance des fonctions d'interface de métadonnées pour "recoller" les morceaux entre le monde logique (le Job en métadonnées) et le monde physique (le fichier .sas sur le serveur). »