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
,
Вы можете тогда:
- расстегнуть молнию на столе
- импортировать его с
readtable()
- применить выбор / фильтры в Matlab