Детали объектов метаданных SAS - библиотеки SAS, PhysicalTables, Jobs - PullRequest
0 голосов
/ 12 мая 2019

Я использовал этот код для извлечения списка объектов для всех библиотек SAS, физических таблиц и заданий. https://github.com/Boemska/macrocore/blob/master/meta/mm_getobjects.sas Теперь мне нужно получить детали этих объектов, Как для библиотек - мне нужно их имя и полный путь, Teradata Libs - имя схемы, путь Lib Физические таблицы - расположение и другие атрибуты Работа - Местоположение и другие атрибуты.

Я не очень хорошо знаю, как или о каких атрибутах мы можем сообщить, но мне определенно нужны их пути и атрибуты. Спасибо.

Ответы [ 2 ]

1 голос
/ 12 мая 2019

В приведенном вами примере используется proc metadata, который возвращает XML, который вам нужно понять и обработать.Настоящая проблема здесь заключается в том, что вам нужно научиться создавать входной XML для построения запроса метаданных, что довольно сложно.

Возможно, более простым является использование функций метаданных шага данных, таких как здесь .

Команда METABROWSE полезна для понимания отношений объектов метаданных (если у вас есть доступ к SAS Foundation), см. здесь

0 голосов
/ 13 мая 2019

Атрибуты, которые вы запрашиваете, будут меняться в зависимости от того, какой механизм библиотеки вы проверяете.

Следующий макрос создаст имя библиотеки для механизмов BASE, OLEDB, ODBC и POSTGRES:

https://github.com/Boemska/macrocore/blob/master/meta/mm_assigndirectlib.sas

Прямые атрибуты доступны согласно этому ответу: Как получить подробную информацию об объектах метаданных в SAS

Путь к папке доступен согласно thisответ :

%let metauri=OMSOBJ:PhysicalTable\A5HOSDWY.BE0006N9;
/* get metadata paths */
data ;
  length tree_path $500 tree_uri parent_uri parent_name $200;
  call missing(tree_path,tree_uri,parent_uri,parent_name);
  drop tree_uri parent_uri parent_name rc ;

  uri="&metauri";
  rc=metadata_getnasn(uri,"Trees",1,tree_uri);
  rc=metadata_getattr(tree_uri,"Name",tree_path);

  do while (metadata_getnasn(tree_uri,"ParentTree",1,parent_uri)>0);
    rc=metadata_getattr(parent_uri,"Name",parent_name);
    tree_path=strip(parent_name)||'/'||strip(tree_path);
    tree_uri=parent_uri;
  end;
  tree_path='/'||strip(tree_path);
run;
...