Accédez au code source caché : Maîtrisez les métadonnées des Stored Processes SAS

Ce code est également disponible en : Deutsch English Español
Niveau de difficulté
Expert
Publié le :
Stéphanie

Le Conseil de l'Expert

Stéphanie
Spécialiste Machine Learning et IA.

L’extraction du code source via l'interface SAS Open Metadata (OMF) est une technique avancée indispensable pour l'audit massif ou la refonte d'environnements SAS 9. Contrairement à une consultation manuelle, l'interrogation de l'objet ClassifierMap permet d'accéder directement au flux de texte stocké dans l'attribut StoredText de l'objet lié TextStore. Cette approche est particulièrement puissante pour industrialiser des opérations de "rechercher-remplacer" (via TRANWRD) sur l'ensemble de votre catalogue, par exemple pour mettre à jour des chemins de fichiers ou des constantes avant une migration.

Attention : Ce code nécessite des droits administrateur.
Le script utilise l'interface SAS© Open Metadata Interface (fonctions metadata_*) pour rechercher les objets de type 'ClassifierMap' correspondant à des Stored Processes. Il parcourt ensuite les notes associées pour trouver celle nommée 'SourceCode' et extrait le texte stocké. Le script inclut également une logique commentée pour modifier et mettre à jour ce code source directement dans les métadonnées. Note : Ce script est spécifique à l'architecture de métadonnées SAS© 9 et ne s'applique pas au contenu natif SAS© Viya (SAS© Content).
Analyse des données

Type : EXTERNE


Les données sont extraites dynamiquement du serveur de métadonnées SAS via des appels de fonctions (metadata_resolve, metadata_getnobj, etc.).

1 Bloc de code
DATA STEP
Explication :
Étape DATA _NULL_ itérant sur les objets de métadonnées pour extraire et afficher le code source des Stored Processes.
Copié !
1DATA _null_;
2 
3/* Initialize the variables. */
4 
5 LENGTH program newprog $ 32587 type id $ 50
6 sp_uri $ 38 note_uri $ 34 note_name $ 255;
7 call missing(of _character_);
8 
9/* Define a query that will return only Stored Process */
10/* objects with an associated source code TextStore object. */
11 
12sp_obj="omsobj:ClassifierMap?ClassifierMap[ @PublicType='StoredProcess'][Notes/TextStore[ @Name='SourceCode']]";
13 
14/* Count how many objects meet that query. */
15 
16 sp_count=metadata_resolve(sp_obj,type,id);
17 
18/* If some exist, gather their information. */
19 IF sp_count > 0 THEN DO i=1 to sp_count;
20 
21/* Get the URI for each Stored Process object found that matches the query. */
22 rc=metadata_getnobj(sp_obj,i,sp_uri);
23 
24/* Count how many notes are associated with the object. */
25 note_count=metadata_getnasn(sp_uri,"Notes",1,note_uri);
26 
27/* If some exist, get their attributes. */
28 IF note_count > 0 THEN DO j=1 to note_count;
29 /* get the URI of the note. */
30 rc=metadata_getnasn(sp_uri,"Notes",j,note_uri);
31 /* get the name of the note. */
32 rc=metadata_getattr(note_uri,"Name",note_name);
33 
34/* If the Note's name is "SourceCode", get it's "StoredText" attribute. */
35 IF note_name="SourceCode" THEN DO;
36 rc=metadata_getattr(note_uri,"StoredText",program);
37 put;
38 put note_uri=; /* Print the URI to the Log */
39 put;
40 put program=; /* Print the program to the log. */
41 /* Optional find and replace code. replace old_text */
42 /* and new_text with the word to replace. */
43 *newprog=tranwrd(program,'old_text','new_text');
44 *rc=metadata_setattr(note_uri,"StoredText",newprog);
45 END;
46 END;
47 END;
48RUN;
L'Astuce Pro
Cd code permet de "hacker" l'interface graphique habituelle (SAS Management Console) pour effectuer des opérations de Search & Replace chirurgicales directement dans le flux XML des métadonnées. C'est un outil de gouvernance extrêmement puissant pour corriger, par exemple, des chemins de bibliothèques obsolètes sur l'ensemble d'un serveur.
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: 03DEC2018


Documentation liée

Aucune documentation spécifique pour cette catégorie.