Запрос метаданных, чтобы получить список всех объектов - PullRequest
1 голос
/ 09 мая 2019

Я новичок в концепции метаданных и SAS DI. Мне нужно запросить метаданные основного хранилища и перечислить все объекты из него. Может кто-нибудь подсказать, пожалуйста, как этого добиться? Спасибо

1 Ответ

2 голосов
/ 09 мая 2019

Прежде всего - если вы просто хотите просматривать / просматривать объекты, проще всего будет развернуть Boemska Metadata Navigator, который является бесплатным веб-приложением для просмотра метаданных (отказ от ответственности, я помогал его создавать): https://github.com/Boemska/metanav/blob/master/README.md

Во-вторых, в метаданных много объектов.Типичный путь таков:

1 - выберите объект TYPE

2 - получите список объектов для определенного ТИПА

3 - получите атрибуты / ассоциации / свойства дляконкретный ОБЪЕКТ

Исходный код для каждого из них доступен здесь: https://github.com/Boemska/metanav/tree/master/sas/stps/User

Чтобы обойти вашу точку и предоставить некоторый фактический код, здесь будут показаны все объекты библиотеки:

%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;
...