Publié le :
Administration CREATION_INTERNE

Récupération des types de métadonnées SAS

Ce code est également disponible en : Deutsch English Español
En attente de validation
Attention : Ce code nécessite des droits administrateur.
Cette macro utilise la procédure `PROC METADATA` pour envoyer une requête `<GetTypes>` au serveur de métadonnées SAS©. La réponse XML est stockée dans un fichier temporaire. Le script génère ensuite dynamiquement un fichier de mappage XML (XML Map) pour extraire les champs ID, Description et HasSubtypes. Enfin, les données sont converties en table SAS© via le moteur LIBNAME XML et triées. NOTE IMPORTANTE : Ce code repose sur l'architecture de serveur de métadonnées de SAS© 9. Il n'est pas compatible avec l'architecture native de SAS© Viya 4 (basée sur des microservices) et ne fonctionnera que s'il est exécuté dans un contexte connecté à un serveur SAS© 9 hérité.
Analyse des données

Type : CREATION_INTERNE


Les données proviennent d'une interrogation système du serveur de métadonnées (PROC METADATA) et sont traitées via des fichiers temporaires générés par le script.

1 Bloc de code
PROC METADATA
Explication :
Envoie une requête XML formatée au serveur de métadonnées pour récupérer la liste des types d'objets disponibles. La réponse est stockée dans le fileref temporaire 'response'.
Copié !
1filename response temp;
2/* get list of libraries */
3PROC METADATA in=
4 '<GetTypes>
5 <Types/>
6 <NS>SAS</NS>
7 <!-- specify the OMI_SUCCINCT flag -->
8 <Flags>2048</Flags>
9 <Options>
10 <!-- include <REPOSID> XML element and a repository identifier -->
11 <Reposid>$METAREPOSITORY</Reposid>
12 </Options>
13 </GetTypes>'
14 out=response;
15RUN;
2 Bloc de code
DATA STEP
Explication :
Écrit le contenu de la réponse XML brute dans le journal SAS à des fins de débogage.
Copié !
1DATA _null_;
2 INFILE response lrecl=1048576;
3 INPUT;
4 put _infile_;
5RUN;
3 Bloc de code
DATA STEP
Explication :
Crée dynamiquement un fichier 'XML Map' (sxlemap) qui définit comment parser le flux XML retourné par PROC METADATA pour en extraire une structure tabulaire.
Copié !
1filename sxlemap temp;
2DATA _null_;
3 file sxlemap;
4 put '<SXLEMAP version="1.2" name="SASTypes"><TABLE name="SASTypes">';
5 put '<TABLE-PATH syntax="XPath">//GetTypes/Types/Type</TABLE-PATH>';
6 put '<COLUMN name="ID"><LENGTH>64</LENGTH>';
7 put '<PATH syntax="XPath">//GetTypes/Types/Type/ @Id</PATH></COLUMN>';
8 /* ... (autres colonnes) ... */
9 put '</TABLE></SXLEMAP>';
10RUN;
4 Bloc de code
PROC SORT Data
Explication :
Utilise le moteur LIBNAME XML pour lire le fichier 'response' en appliquant la carte 'sxlemap', puis trie les données extraites par la colonne 'ID' pour créer la table de sortie finale.
Copié !
1LIBNAME _XML_ xml xmlfileref=response xmlmap=sxlemap;
2/* sort the response by library name */
3PROC SORT DATA=_XML_.sastypes out=&outds;
4 BY id;
5RUN;
5 Bloc de code
Nettoyage
Explication :
Libère les références aux fichiers temporaires et à la bibliothèque XML.
Copié !
1filename sxlemap clear;
2filename response clear;
3LIBNAME _XML_ clear;
4 
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.
Banner
Le Conseil de l'Expert
Expert
Michael
Responsable de l'infrastructure Viya.
« Ce programme est indissociable de l'Open Metadata Architecture (OMA). Dans SAS Viya, cette notion de "Type" est remplacée par des définitions de ressources gérées par divers microservices (Folders, Files, Identities). Ce code ne peut donc pas être utilisé pour explorer l'infrastructure native de Viya, sauf si vous travaillez dans un environnement hybride où Viya doit encore interagir avec un serveur de métadonnées 9.4 distant. »