查询元数据以获取所有对象的列表

时间:2019-05-09 01:16:35

标签: sas

我是元数据概念和SAS DI的新手。我需要查询基础存储库元数据,并从中列出所有对象。有人可以建议如何实现吗? 谢谢

1 个答案:

答案 0 :(得分:2)

首先-如果只想列出/浏览对象,最简单的方法是部署Boemska Metadata Navigator,这是一个用于浏览元数据的免费Web应用程序(免责声明,我帮助构建了它):{{3 }}

第二-元数据中有很多对象。典型的路径是这样的:

1-选择一个对象类型

2-获取特定类型的对象列表

3-获取特定对象的属性/关联/属性

每个工具的源代码都可以在这里找到:https://github.com/Boemska/metanav/blob/master/README.md

为了解决您的问题并提供一些实际的代码,这将显示所有库对象:

%let type=SASLibrary;/*default value */
filename response temp;
proc metadata in=
 "<GetMetadataObjects>
   <Reposid>$METAREPOSITORY</Reposid>
   <Type>&type</Type>
   <Objects/>
   <NS>SAS</NS>
   <Flags>0</Flags>
   <Options/>
  </GetMetadataObjects>"
  out=response;
run;

/* create an XML map to read the response */
filename sxlemap temp;
data _null_;
  file sxlemap;
  put '<SXLEMAP version="1.2" name="SASObjects"><TABLE name="SASObjects">';
  put "<TABLE-PATH syntax='XPath'>/GetMetadataObjects/Objects/&type</TABLE-PATH>";
  put '<COLUMN name="id">';
  put "<PATH syntax='XPath'>/GetMetadataObjects/Objects/&type/@Id</PATH>";
  put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>200</LENGTH>";
  put '</COLUMN><COLUMN name="name">';
  put "<PATH syntax='XPath'>/GetMetadataObjects/Objects/&type/@Name</PATH>";
  put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>200</LENGTH>";
  put '</COLUMN></TABLE></SXLEMAP>';
run;
libname _XML_ xml xmlfileref=response xmlmap=sxlemap;
proc sort data= _XML_.SASObjects out=SASObjects;
  by name;
run;