#sas #sas-macro
#sas #sas-макрос
Вопрос:
Поскольку в одной библиотеке содержится много наборов данных. Как я могу использовать код SAS, чтобы узнать, в каком наборе данных наибольшее количество обращений? Предположим, имя библиотеки «SASHELP».
Спасибо!
Комментарии:
1. Что вы подразумеваете под «обращениями»? Вы имеете в виду количество записей («наблюдений» в SAS)? Это имя столбца? Пожалуйста, отредактируйте свой вопрос, чтобы привести пример, который поможет объяснить, что вы имеете в виду.
Ответ №1:
Семейство таблиц SQL dictionary.*
предоставляет доступ ко всем видам метаданных. Будьте осторожны, некоторые запросы по словарю могут вызвать большую активность при сборе запрошенной информации.
Из документов:
Как просмотреть таблицы СЛОВАРЯ
…
СЛОВАРНЫЕ таблицы и производительностьКогда вы запрашиваете таблицу СЛОВАРЯ, SAS собирает информацию, относящуюся к этой таблице. В зависимости от запрашиваемой таблицы СЛОВАРЯ этот процесс может включать поиск библиотек, открытие таблиц и выполнение представлений SAS. В отличие от других процедур SAS и этапа DATA, PROC SQL может улучшить этот процесс, оптимизировав запрос перед запуском процесса select. Поэтому, хотя можно получить доступ к информации таблицы СЛОВАРЯ с помощью процедур SAS или шага ДАННЫХ с использованием представлений SASHELP, часто более эффективно использовать вместо этого PROC SQL.
…Примечание: SAS не поддерживает информацию таблицы СЛОВАРЯ между запросами. Каждый запрос таблицы СЛОВАРЯ запускает новый процесс обнаружения.
Пример:
* Use dictionary.tables to get the names of the tables with the 10 most rowcount;
proc sql;
reset outobs=10;
create table top_10_datasets_by_rowcount as
select libname, memname, nobs
from dictionary.tables
where libname = 'SASHELP'
and memtype = 'DATA'
order by nobs descending
;
reset outobs=max;