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