Вопрос или проблема
как получить вторые 10,000 cusips из муниципальной группы США от Refinitiv, используя Python и справочник кода Refinitiv.
import refinitiv.data as rd
rd.open_session()
response = rd.discovery.search( view=rd.discovery.Views.MUNICIPAL_INSTRUMENTS, top=20000, skip = 10000, filter=(IsActive eq true and SearchAllCategoryv2 eq 'US Municipal Bonds'), select=CUSIP )
Этот вызов завершился ошибкой с сообщением: RDError: Код ошибки 400 | Ошибка валидации: json.Top в теле должен быть меньше или равен 10000
Существует ли способ обойти этот лимит в 10,000?
Ответ или решение
Вопрос о том, как извлечь второй набор из 10 000 CUSIP из универсума муниципальных облигаций США с использованием библиотеки Python Refinitiv Codebook, поднимает важные аспекты работы с ограничениями API и эффективного извлечения данных.
Проблема
Судя по предоставленному коду, вы столкнулись с ошибкой, связанной с ограничением, которое накладывается на количество записей, которые можно получить за один запрос. Сообщение об ошибке RDError: Error code 400 указывает на то, что параметр top
в вашем запросе превышает допустимое значение. Максимально допустимое количество записей в одном запросе составляет 10 000, что, к сожалению, не позволяет вам сразу извлечь доступные 20 000 CUSIP.
Решение
Для того чтобы обойти это ограничение, вам нужно разделить ваш запрос на несколько частей. Если вам нужно получить вторую группу из 10 000 CUSIP, вы можете использовать параметр skip
в вашем API-запросе, но при этом необходимо изменить значение параметра top
, чтобы оно не превышало 10 000.
Используйте следующий подход:
- Первый запрос: Получите первые 10 000 записей.
- Второй запрос: Используйте
skip=10000
иtop=10000
, чтобы получить следующие 10 000 записей.
Пример кода может выглядеть так:
import refinitiv.data as rd
# Открываем сессию
rd.open_session()
# Первый запрос - первые 10,000 CUSIP
first_response = rd.discovery.search(
view=rd.discovery.Views.MUNICIPAL_INSTRUMENTS,
top=10000,
filter=(IsActive eq true and SearchAllCategoryv2 eq 'US Municipal Bonds'),
select=CUSIP
)
# Выводим результат первого запроса
print("Первый набор CUSIP:", first_response)
# Второй запрос - следующие 10,000 CUSIP
second_response = rd.discovery.search(
view=rd.discovery.Views.MUNICIPAL_INSTRUMENTS,
top=10000,
skip=10000,
filter=(IsActive eq true and SearchAllCategoryv2 eq 'US Municipal Bonds'),
select=CUSIP
)
# Выводим результат второго запроса
print("Второй набор CUSIP:", second_response)
Заключение
Таким образом, чтобы извлечь второй набор из 10 000 CUSIP из вселенной муниципальных облигаций США, необходимо разбить ваш запрос на более мелкие части, соблюдая ограничение на количество записей в одном запросе. Этот подход позволяет эффективно управлять данными и избегать ошибок, связанных с превышением лимитов API Refinitiv. Не забывайте также проверять документацию и обновления к библиотеке, так как могут быть изменения в API или новые способы работы с данными.