La source de données est le serveur de métadonnées SAS lui-même. La table `work.libinfo` est entièrement générée par le script en interrogeant les métadonnées via des fonctions spécifiques comme `metadata_resolve` et `metadata_getnobj`. Aucune donnée externe n'est lue.
1 Bloc de code
OPTIONS
Explication : Ce bloc configure les paramètres de connexion au serveur de métadonnées SAS. Il définit l'adresse du serveur, le port, les informations d'identification de l'utilisateur, le référentiel à utiliser et le protocole de communication.
Explication : Ce DATA STEP crée la table `work.libinfo`. Il initialise les variables, puis utilise la fonction `metadata_resolve` pour trouver toutes les bibliothèques SAS dans les métadonnées. Note: la requête `obj` contient une référence de fichier qui semble invalide pour une requête de métadonnées. Pour chaque bibliothèque trouvée, il boucle pour extraire ses propriétés (`metadata_getattr`) et recherche ensuite les tables physiques associées via une seconde requête `metadata_resolve`. Si des tables sont trouvées, leurs noms sont extraits et une ligne est écrite dans la table de sortie `work.libinfo` avec le libref, le nom de la bibliothèque et le nom de la table.
Copié !
data work.libinfo;
/*declare and initialize variables */
length
type $ 20
lib_ref $ 8
lib_uri lib_name app_uri app_name dir_uri tab_uri tab_name $ 50
id lib_id $ 17
path $ 255;
keep lib_ref lib_name tab_name;
call missing(of _character_);
/* Define library search parameters. */
obj="omsobj:SASLibrary? @code_sas_json/RFValid.json contains '.'";
/* Search Metadata for libraries */
libcount=metadata_resolve(obj,type,id);
put "INFO: Found " libcount "libraries.";
/* for each library found, extract name and associated */
/* properties (first associated application server, path) */
if libcount > 0 then do n=1 to libcount;
rc=metadata_getnobj(obj,n,lib_uri);
rc=metadata_getattr(lib_uri,"Name",lib_name);
rc=metadata_getattr(lib_uri,"Id",lib_id);
rc=metadata_getattr(lib_uri,"Libref",lib_ref);
rc=metadata_getnasn(lib_uri,"DeployedComponents",1,app_uri);
rc=metadata_getattr(app_uri,"Name",app_name);
rc=metadata_getnasn(lib_uri,"UsingPackages",1,dir_uri);
rc=metadata_getattr(dir_uri,"DirectoryName",path);
/* Define a query to search for any tables */
/* associated with the library in Metadata. */
tabobj="omsobj:PhysicalTable?PhysicalTable[TablePackage/SASLibrary[ @Id='"||lib_id||"']] or [TablePackage/DatabaseSchema/UsedByPackages/SASLibrary[ @Id='"||lib_id||"']]";
/* Count how many associations exist. */
tabcount=metadata_resolve(tabobj,type,id);
/* If there are any, pull the name of each one and write out the data set. */
if tabcount > 0 then do t=1 to tabcount;
rc=metadata_getnobj(tabobj,t,tab_uri);
rc=metadata_getattr(tab_uri,"Name",tab_name);
output; /* Push results to table */
end;
call missing (path); /* clear path variable. */
end;
else put "INFO: No libraries to resolve.";
run;
tabobj="omsobj:PhysicalTable?PhysicalTable[TablePackage/SASLibrary[ @Id='"||lib_id||"']] or [TablePackage/DatabaseSchema/UsedByPackages/SASLibrary[ @Id='"||lib_id||"']]";
38
39
/* Count how many associations exist. */
40
41
tabcount=metadata_resolve(tabobj,type,id);
42
43
/* If there are any, pull the name of each one and write out the data set. */
44
45
IF tabcount > 0 THENDO t=1 to tabcount;
46
rc=metadata_getnobj(tabobj,t,tab_uri);
47
rc=metadata_getattr(tab_uri,"Name",tab_name);
48
OUTPUT; /* Push results to table */
49
END;
50
call missing (path); /* clear path variable. */
51
END;
52
ELSE put "INFO: No libraries to resolve.";
53
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: 08FEB2017
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.