Как я могу прочитать набор данных SAS? - PullRequest
9 голосов
/ 03 марта 2010

У меня много файлов в формате SAS, и я хотел бы иметь возможность читать их в программах вне SAS. У меня нет ничего, кроме базовой установленной системы SAS. Я мог бы вручную конвертировать каждый, но я бы хотел, чтобы это делалось автоматически.

Ответы [ 5 ]

6 голосов
/ 11 марта 2010

Для работы в качестве сервера данных вам потребуется сеанс SAS.Затем вы можете получить доступ к данным SAS с помощью ODBC, см. Руководство по драйверам SAS ODBC .

Чтобы запустить локальный сервер SAS ODBC, вам необходимо:

  1. Определите настройку сервера SAS ODBC, как описано в руководстве по драйверам SAS ODBC.В следующем примере я подключусь к серверу, настроенному с именем «loclodbc».
  2. Добавьте запись в файл служб, (C: \ WINDOWS \ system32 \ drivers\ etc \ services), например:

    • loclodbc 9191 / tcp

    ... установить номер порта (здесь: 9191), чтобы он соответствовал вашему локальномунастроить.Имя службы «loclodbc» должно соответствовать имени сервера, как определено в настройке ODBC.Обратите внимание, что термин «сервер» не имеет никакого отношения к имени физического хоста вашего ПК.

Ваш сервер SAS ODBC готов к работе, но ему не назначены доступные ресурсы данных.Обычно вы устанавливаете это на вкладке «Библиотеки» в процессе установки SAS ODBC, но, поскольку вы хотите указывать источники данных «на лету», мы опускаем это.

Из вашего клиентского приложения вы можете теперьподключитесь к серверу ODBC SAS, укажите ресурсы данных, к которым вы хотите получить доступ, и извлеките данные.

Способ, которым SAS указывает на ресурсы данных, - это понятие «LIBNAME».Имя библиотеки - это логический указатель на коллекцию данных.

Таким образом,

LIBNAME sasadhoc 'C:\sasdatafolder';

назначает папке "C: \ sasdatafolder" логический дескриптор "sasiodat".

Если вы из SAS хотите получить доступ к данным, находящимся в файле таблицы данных SAS "C: \ sasdatafolder \ test.sas7bdat", вы должны сделать что-то вроде этого:

LIBNAME sasadhoc 'C:\sasdatafolder';
PROC SQL;
  CREATE TABLE WORK.test as
  SELECT *
  FROM sasadhoc.test
  ;
QUIT;

Итак, что нам нужно сделатьсказать нашему серверу SAS ODBC назначить имя библиотеки для C: \ sasdatafolder из нашего клиентского приложения.Мы можем сделать это, отправив этот запрос на выделение ресурсов при запуске, используя параметр DBCONINIT.

Я сделал несколько примеров кода для этого.Мой пример кода также написан на языке BASE SAS.Поскольку очевидно, что есть более умные способы доступа к данным SAS, чем подключение SAS к SAS через ODBC, этот код служит только примером.

Вы должны быть в состоянии взять полезные биты и создать собственное решение виспользуемая среда программирования ...

Пример кода подключения SAS ODBC:

PROC SQL;
  CONNECT TO ODBC(DSN=loclodbc DBCONINIT="libname sasadhoc 'c:\sasdatafolder'");
  CREATE TABLE temp_sas AS
  SELECT * FROM CONNECTION TO ODBC(SELECT * FROM sasadhoc.test);
QUIT;

Волшебство происходит в части кода "CONNECT TO ODBC ...", присваиваяимя_библиотеки в папку, в которой находятся необходимые данные.

4 голосов
/ 13 ноября 2013

Теперь есть пакет python, который позволит вам читать файлы .sas7bdat или конвертировать их в csv, если вы предпочитаете

https://pypi.python.org/pypi/sas7bdat

3 голосов
/ 15 июня 2013

Вы можете создать программу преобразования SAS в CSV.

Сохранить следующее в sas_to_csv.sas:

proc export data=&sysparm
    outfile=stdout dbms=csv;
run;

Затем, если вы хотите получить доступ к libname.dataset, вызовите эту программу следующим образом:

sas sas_to_csv -noterminal -sysparm "libname.dataset"

Данные SAS преобразуются в CSV, который можно передать в Python. В Python было бы достаточно просто сгенерировать параметры "libname.dataset" программно.

2 голосов
/ 04 марта 2010

Я никогда не пробовал http://www.oview.co.uk/dsread/,, но это может быть то, что вы ищете: «простая утилита командной строки для работы с наборами данных в формате файла SAS7BDAT». Но обратите внимание: «Это программное обеспечение следует считать экспериментальным и не гарантирует его точность. Вы используете его на свой страх и риск. Пока оно будет работать только с несжатыми файлами SAS7BDAT формата Windows».

2 голосов
/ 04 марта 2010

Я думаю, вы могли бы использовать ADO, Подробнее см. Сайт поддержки SAS .

Отказ от ответственности:

  1. Я давно не смотрел на это
  2. Я не уверен на 100%, что для этого не требуется дополнительное лицензирование
  3. Я не уверен, что вы можете сделать это с помощью Python
...