Чтобы использовать данные как собственные в SAS, одним из подходов было бы написать макрос для сопоставления исходных имен SQL (для метки) с соответствующими новыми именами SAS.Если исходные имена таблиц также были искажены, у вас будет гораздо больше проблем.
Исходный SQL
select Abracadabra_Magical_Unity_Formation_SequenceId from AMUF_Master
Замените на
select %nameFor(Abracadabra_Magical_Unity_Formation_SequenceId) from AMUF_Master
Макрос %nameFor
будетЛибо выполните динамический поиск по таблицам в библиотеке, либо, возможно, лучше, когда вы создаете статическую таблицу, создайте таблицу фиксированных отображений из одноразового поиска
* presume SQL data now in libref MIGRATED;
* do once to get the variable metadata that includes LABEL and NAME;
proc sql;
create table static.nameFor as
select * from sashelp.vcolumn
where libnames = 'MIGRATED';
* use as needed;
%macro nameFor(SQL_Name);
%sysfunc(dosubl(select NAME from static.nameFor where LABEL="&SQL_Name"))
%mend;
Вы также можете использовать static.nameFor
дляобнаружить все имена SQL, которые были изменены во время миграцииЭто будет where name ne label
.
Автоматизированный подход заключается в создании программы поиска и замены, которая вносит изменения в копию исходных запросов SQL под рукой.
Поиск и замена будут либо
- найти
<long-named column>
, заменить на %nameFor(<long-named column>)
или - найти
<long-named column>
, заменить на <migrated to SAS column name>
Первый способ замены добавляет шум.Второй способ теряет некоторые оригинальные запросы 'true-flavour'