MATLAB Database fetch() для WRDS Compustat занимает слишком много времени

Я подключаю MATLAB к базе данных COMPUSTAT от Wharton Research Data Services и выполняю простой запрос

WRDS_Connect

setdbprefs('FetchInBatches','yes')
query = exec(WRDS, ['select gvkey from COMP.FUNDA where fyear = 2000 order by gvkey asc']);
result = fetch(query);
result.data

WRDS_Connect просто устанавливает соединение с сервером WRDS, используя драйверы JDBC и

WRDS = database(instance, username, password, serverAddress);

Запрос не слишком большой и дает мне 27000 строк данных. Однако это занимает слишком много времени. Профилирование показывает, что для этих 27000 строк требуется около 5 минут. Я хочу на самом деле делать более обширные запросы, но это не должно занять так много времени.

Что я могу сделать, чтобы ускорить процесс? Я прикрепил скриншот профилирования. Скриншот профилирования

Спасибо за вашу помощь!

1 ответ

Если у вас есть степень доктора наук или выше, вы можете немного изменить подход.

Я разработал API, который позволяет загружать наборы данных с серверов Unix WRDS. Это простой в использовании и быстрее.

Проверьте это на https://github.com/okomarov/wrds и дайте мне знать, если у вас есть проблемы.

wrds_install
w = wrds('username');
w.sas2csv('COMP.FUNDA');

Данные будут сохранены в .\data\COMP.FUNDA.zip,

Вы можете тогда:

  1. расстегнуть молнию на столе
  2. импортировать его с readtable()
  3. применить выбор / фильтры в Matlab
Другие вопросы по тегам