Получить информацию о сервере для всех librefs - PullRequest
0 голосов
/ 30 мая 2018

Как я могу получить таблицу с переменными libref и server_id (или любой информацией о сервере) для всех библиотек, доступных мне в SAS?

Моя цель - получить сводку о том, гдеданные физически расположены для всех этих библиотек, чтобы создавать эффективные запросы при извлечении данных с разных серверов.

Ответы [ 3 ]

0 голосов
/ 30 мая 2018

Из кода и советов Тома я построил нужную мне таблицу с помощью этого кода:

PROC SQL;
SELECT distinct libname, engine, path,
CASE WHEN engine in('BASE','V9') THEN 'SAS' ELSE catx('_',engine,path) END AS server
FROM DICTIONARY.LIBNAMES ;
QUIT;
0 голосов
/ 30 мая 2018

Есть несколько таблиц, которые могут помочь вам в библиотеке SASHELP, как упомянул Том.Вы также можете использовать VTABLE, в котором будут все таблицы, из которых библиотека и VCOLUMN будут содержать подробности от библиотеки к таблице и столбцам, а также используемый тип данных и их длину.Они работают примерно так же, как в данных SQL из базы данных information_schema.

В качестве альтернативы, использование содержимого proc в наборе данных также вернет весь его компонент, и вы можете поместить его в таблицу или макропеременную.Надеюсь, это поможет!

0 голосов
/ 30 мая 2018

Посмотрите, какая информация доступна в представлении SASHELP.VLIBNAM (или DICTIONARY.LIBNAMES при использовании PROC SQL).

Вот служебный макрос, который извлекает ядро, хост и схему из этого представления дляданный libref.Я использовал его для двигателей TERADATA, ORACLE и ODBC. dblibchk.sas

...