Вы можете запросить представления в SASHELP (vtable, vcolumn и т. Д.), Чтобы сделать это. Быстрый способ - создать временную таблицу из sashelp.vcolumn для каждой из двух таблиц, которые вы хотите сравнить, а затем использовать соединение PROC SQL для их сравнения. Затем вы будете сравнивать структуры, которые представлены в данных из vcolumn.
Чтобы начать, посмотрите, что находится в SASHELP.vcolumn.
Вот базовый пример использования этого метода для сравнения переменных в 2 наборах данных.
* provide names of the two data sets here ;
%let ds1=TheFirstDataSet;
%let ds2=TheOtherDataSet;
* upcase the data set names ;
%let ds1=%sysfunc(upcase(&ds1));
%let ds2=%sysfunc(upcase(&ds2));
proc sql;
* retrieve info on these tables from sashelp.vcolumn;
create table first as select * from sashelp.vcolumn where upcase(memname)="&ds1";
create table second as select * from sashelp.vcolumn where upcase(memname)="&ds2";
* join these data sets and report on differences for var names;
select coalescec(f.name,s.name) as varName
,case
when f.name is null then "This var is in &ds2 only"
when s.name is null then "This var is in &ds1 only"
else 'This var is in both data sets'
end as DiffDescription
from
first as f
full outer join
second as s
on f.name=s.name
;
quit;
Вы можете обобщить это для других атрибутов, таких как тип данных, длина, метка и т. Д., Все из которых доступны в vcolumn.
- Обратите внимание, что вам может потребоваться изменить этот код, чтобы он соответствовал библиотекам, которые могут иметь ваши наборы данных.