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é !
filename response temp;
/* get list of libraries */
proc metadata in=
'<GetTypes>
<Types/>
<NS>SAS</NS>
<!-- specify the OMI_SUCCINCT flag -->
<Flags>2048</Flags>
<Options>
<!-- include <REPOSID> XML element and a repository identifier -->
<Reposid>$METAREPOSITORY</Reposid>
</Options>
</GetTypes>'
out=response;
run;
1
filename response temp;
2
/* get list of libraries */
3
PROC 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;
15
RUN;
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é !
data _null_;
infile response lrecl=1048576;
input;
put _infile_;
run;
1
DATA _null_;
2
INFILE response lrecl=1048576;
3
INPUT;
4
put _infile_;
5
RUN;
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é !
filename sxlemap temp;
data _null_;
file sxlemap;
put '<SXLEMAP version="1.2" name="SASTypes"><TABLE name="SASTypes">';
put '<TABLE-PATH syntax="XPath">//GetTypes/Types/Type</TABLE-PATH>';
put '<COLUMN name="ID"><LENGTH>64</LENGTH>';
put '<PATH syntax="XPath">//GetTypes/Types/Type/ @Id</PATH></COLUMN>';
/* ... (autres colonnes) ... */
put '</TABLE></SXLEMAP>';
run;
1
filename sxlemap temp;
2
DATA _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>';
10
RUN;
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é !
libname _XML_ xml xmlfileref=response xmlmap=sxlemap;
/* sort the response by library name */
proc sort data=_XML_.sastypes out=&outds;
by id;
run;
1
LIBNAME _XML_ xml xmlfileref=response xmlmap=sxlemap;
2
/* sort the response by library name */
3
PROC SORTDATA=_XML_.sastypes out=&outds;
4
BY id;
5
RUN;
5 Bloc de code
Nettoyage
Explication : Libère les références aux fichiers temporaires et à la bibliothèque XML.
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.
« 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. »
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.