Экспорт набора данных SAS в Access с отформатированными значениями - PullRequest
1 голос
/ 12 января 2012

Я создаю таблицу в SAS и экспортирую ее в базу данных Microsoft Access (mdb).Сейчас я делаю это, подключаясь к базе данных как к библиотеке:

libname plus "C:\...\plus.mdb";

data plus.groupings;
set groupings;
run;

Однако SAS не экспортирует форматы переменных в базу данных, поэтому я получаю числовые значения в таблице, которую яхочу быть читаемым человеком.Я пробовал proc sql с тем же эффектом.Что я могу сделать, чтобы получить отформатированные данные в Access?

Это кажется настолько фундаментальным, что мне кажется, что я упускаю что-то очевидное.Спасибо за вашу помощь.

То, что я пробовал до сих пор: введите libname в mdb, шаг данных (как указано выше)Простой libname для mdb, proc sql создать таблицуИмя библиотеки OLE DB (как в ссылке Роба), шаг данныхOLE DB libname, proc sql создать таблицу

Ответы [ 3 ]

1 голос
/ 12 января 2012

Что сейчас работает:

Поскольку SAS сохраняет сохраненные отформатированные значения в csv, я экспортирую таблицу в файл csv, который передает связанную таблицу в базе данных Access.Это кажется не идеальным, но это работает.Странно, что SAS явно способен экспортировать отформатированные значения, но , похоже, не документирует это .

proc export
data= groupings
outfile= "C:\...\groupings.csv" 
dbms= CSV
replace;
putnames= yes;
run;

Кажущимся недостатком этого подхода является то, что мне приходится заново создавать вручнуютаблица, если я добавлю новое поле.Если бы я мог добавить / создать в proc sql, это не было бы проблемой.

1 голос
/ 12 января 2012

Здесь есть куча альтернативных типов подключения, может быть, один из них будет работать?:

http://support.sas.com/techsup/technote/ts793.pdf

0 голосов
/ 14 января 2012

Из поддержки SAS: если вы создаете представление SQL с помощью put () для определения переменных, вы можете затем экспортировать представление в базу данных и сохранить отформатированные значения. Пример:

libname plus "C:\...\plus.mdb";

proc sql;
create view groupings_view as (
    SELECT put(gender, gender.) AS gender,
           put(race, race.) AS race,
           ... etc.
    FROM groupings
);


create table plus.groupings as (
    SELECT *
    FROM groupings_view
);

quit;

Я не смог просто создать представление непосредственно в Access - мне не совсем ясно, что Jet поддерживает представления так, как это понимает SAS, так что, возможно, в этом проблема. В любом случае, вышесказанное помогает добиться ограниченного числа переменных, которые мне нужно экспортировать. Я могу представить себе автоматизацию написания таких запросов с помощью прикольного макроса, работающего с выводом содержимого proc, но я ужасно благодарен, что мне не нужно этого делать ...

...