Skip to content

Commit 8cd29b5

Browse files
committed
Add support for raw data retrieval in currency, OData, and SGS modules
1 parent 73056e5 commit 8cd29b5

3 files changed

Lines changed: 88 additions & 0 deletions

File tree

docs/currency.rst

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,3 +77,32 @@ O módulo :py:mod:`bcb.currency` obtem dados de moedas do conversor de moedas do
7777
7878
currency.get_currency_list().head()
7979
80+
Obtendo o CSV bruto
81+
^^^^^^^^^^^^^^^^^^^
82+
83+
Para pipelines de dados onde o dado bruto deve ser persistido antes de qualquer transformação,
84+
o parâmetro ``output='text'`` pode ser passado à função :py:func:`bcb.currency.get`.
85+
86+
Para um único símbolo é retornada uma ``str`` com o CSV bruto; para múltiplos símbolos é
87+
retornado um ``dict`` mapeando símbolo ISO → CSV string.
88+
89+
.. code:: python
90+
91+
from bcb import currency
92+
93+
# único símbolo → str (CSV)
94+
raw = currency.get('USD', start='2024-01-01', end='2024-01-31', output='text')
95+
96+
# múltiplos símbolos → dict[str, str]
97+
raws = currency.get(['USD', 'EUR'], start='2024-01-01', end='2024-01-31', output='text')
98+
# raws['USD'] → CSV string
99+
# raws['EUR'] → CSV string
100+
101+
# salvar em disco
102+
with open('usd_raw.csv', 'w') as f:
103+
f.write(raw)
104+
105+
O CSV retornado usa ponto-e-vírgula como separador, datas no formato ``DDMMYYYY`` e vírgula
106+
como separador decimal — exatamente como devolvido pela API PTAX do BCB.
107+
O comportamento padrão (retorno de DataFrame) é mantido quando o parâmetro não é informado.
108+

docs/odata.rst

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,34 @@ Para isso incluímos o método ``format`` na cadeia da consulta e passamos como
387387
.limit(5)
388388
.text())
389389
390+
O parâmetro ``output='text'``
391+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
392+
393+
Para pipelines de dados onde é necessário persistir o dado bruto antes de qualquer transformação
394+
(camada SOR/SOT), o parâmetro ``output='text'`` pode ser passado diretamente ao método ``collect``
395+
ou ao método ``get`` do endpoint.
396+
Isso evita serializar um DataFrame de volta para texto, o que pode ser uma operação com perda de informação.
397+
398+
.. code:: python
399+
400+
ep = em.get_endpoint('ExpectativasMercadoTop5Anuais')
401+
402+
# via query chain
403+
raw = (ep.query()
404+
.filter(ep.Indicador == 'IPCA')
405+
.limit(100)
406+
.collect(output='text'))
407+
408+
# via atalho get()
409+
raw = ep.get(ep.Indicador == 'IPCA', limit=100, output='text')
410+
411+
# salvar em disco
412+
with open('expectativas_raw.json', 'w') as f:
413+
f.write(raw)
414+
415+
O texto retornado é o JSON bruto da resposta OData, incluindo o campo ``@odata.context`` e o array ``value``.
416+
O comportamento padrão (retorno de DataFrame) é mantido quando o parâmetro não é informado.
417+
390418

391419
Classe ODataAPI
392420
---------------

docs/sgs.rst

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,37 @@ Exemplos
3636
plt.legend().set_visible(False)
3737
3838
39+
Obtendo o JSON bruto
40+
--------------------
41+
42+
A função :py:func:`bcb.sgs.get_json` retorna o JSON bruto da API para um único código.
43+
Para pipelines de dados onde o dado bruto deve ser persistido antes de qualquer transformação,
44+
o parâmetro ``output='text'`` pode ser passado à função :py:func:`bcb.sgs.get`.
45+
46+
Para um único código é retornada uma ``str``; para múltiplos códigos é retornado um ``dict``
47+
mapeando código inteiro → JSON string.
48+
49+
.. code:: python
50+
51+
from bcb import sgs
52+
53+
# único código → str
54+
raw = sgs.get(433, start='2024-01-01', output='text')
55+
56+
# múltiplos códigos → dict[int, str]
57+
raws = sgs.get([433, 189], start='2024-01-01', output='text')
58+
# raws[433] → JSON string do IPCA
59+
# raws[189] → JSON string do IGP-M
60+
61+
# salvar em disco
62+
with open('ipca_raw.json', 'w') as f:
63+
f.write(raw)
64+
65+
O JSON retornado é um array de objetos com os campos ``data`` e ``valor``, exatamente como
66+
devolvido pela API BCData/SGS.
67+
O comportamento padrão (retorno de DataFrame) é mantido quando o parâmetro não é informado.
68+
69+
3970
Dados de Inadimplência de Operações de Crédito
4071
==============================================
4172

0 commit comments

Comments
 (0)