Skip to content

Commit 49adaa9

Browse files
committed
deploy: 6cb053d
1 parent 9805301 commit 49adaa9

17 files changed

Lines changed: 406 additions & 267 deletions

_images/taxajuros1.png

2 Bytes
Loading

_sources/api.rst.txt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,11 @@ Módulo :py:mod:`bcb.currency`
1414
.. automodule:: bcb.currency
1515
:members:
1616

17-
:ref:`APIs OData`
18-
-----------------
17+
APIs OData
18+
----------
1919

20-
.. automodule:: bcb
20+
.. automodule:: bcb.odata.api
2121
:members:
22+
:show-inheritance:
2223
:member-order: bysource
2324
:special-members: __init__

_sources/currency.rst.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ Moedas
44
O pacote tem 2 APIs que dão acesso a informações de moedas.
55

66

7-
- :ref:`API OData` com cotações de taxas de câmbio
7+
- :ref:`API OData de Moedas` com cotações de taxas de câmbio
88
- Webscraping no :ref:`Conversor de Moedas`
99

10-
API OData
11-
---------
10+
API OData de Moedas
11+
-------------------
1212

1313

1414
.. _documentacao: https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/documentacao

_sources/odata.rst.txt

Lines changed: 82 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,89 @@
11

2-
APIs OData
3-
==========
2+
OData
3+
=====
44

55
Diversas classes implementam a integração com APIs OData.
66

7-
- :py:class:`bcb.Expectativas`
8-
- :py:class:`bcb.PTAX`
9-
- :py:class:`bcb.TaxaJuros`
10-
- :py:class:`bcb.IFDATA`
11-
- :py:class:`bcb.MercadoImobiliario`
7+
- :py:class:`bcb.odata.api.Expectativas`
8+
- :py:class:`bcb.odata.api.PTAX`
9+
- :py:class:`bcb.odata.api.TaxaJuros`
10+
- :py:class:`bcb.odata.api.IFDATA`
11+
- :py:class:`bcb.odata.api.MercadoImobiliario`
1212

13-
Todas essas classes herdam de :py:class:`bcb.BaseODataAPI` que faz a integração
13+
Todas essas classes herdam de :py:class:`bcb.odata.api.BaseODataAPI` que faz a integração
1414
com as APIs OData e organiza a informação em um ``DataFrame``.
1515

16-
:py:class:`bcb.BaseODataAPI`
17-
----------------------------
16+
Veja todas as APIs implementadas em :ref:`APIs OData`.
1817

19-
A classe :py:class:`bcb.BaseODataAPI` possui apenas 2 métodos:
18+
:py:class:`bcb.odata.api.BaseODataAPI`
19+
--------------------------------------
2020

21-
- :py:meth:`bcb.BaseODataAPI.describe`: imprime informações da API, como
21+
A classe :py:class:`bcb.odata.api.BaseODataAPI` possui apenas 2 métodos:
22+
23+
- :py:meth:`bcb.odata.api.BaseODataAPI.describe`: imprime informações da API, como
2224
quais *endpoints* estão disponíveis. Passando o nome do *endpoint*
2325
o método imprime as informações do que é retornado pelo *endpoint* e
2426
o se há algum parâmetro necessário, caso seja uma função.
25-
- :py:meth:`bcb.BaseODataAPI.get_endpoint`: imprime informações da API, como
26-
quais *endpoints* estão disponíveis.
27+
- :py:meth:`bcb.odata.api.BaseODataAPI.get_endpoint`: retorna um objeto
28+
:py:class:`bcb.odata.api.Endpoint` referente ao nome do *endpoint* fornecido.
29+
2730

28-
:py:class:`bcb.Endpoint`
29-
------------------------
31+
:py:class:`bcb.odata.api.Endpoint`
32+
----------------------------------
3033

31-
Os *endpoints* retornados herdam da classe :py:class:`bcb.Endpoint`,
32-
que possui o método :py:meth:`bcb.Endpoint.query`, através do qual é
33-
possível realizar as consultas estruturadas na API OData.
34+
Os *endpoints* retornados herdam da classe :py:class:`bcb.odata.api.Endpoint`,
35+
que possui o método :py:meth:`bcb.odata.api.Endpoint.query`, através do qual são
36+
realizadas as consultas estruturadas na API OData.
3437

35-
:py:class:`bcb.odata.ODataQuery`
36-
--------------------------------
38+
:py:class:`bcb.odata.framework.ODataQuery`
39+
------------------------------------------
3740

38-
:py:meth:`bcb.Endpoints.query` retorna um objeto :py:class:`bcb.odata.ODataQuery`
41+
:py:meth:`bcb.odata.api.Endpoints.query` retorna um objeto :py:class:`bcb.odata.framework.ODataQuery`
3942
que possui os seguintes métodos.
4043

41-
- :py:meth:`bcb.odata.ODataQuery.filter`
42-
- :py:meth:`bcb.odata.ODataQuery.select`
43-
- :py:meth:`bcb.odata.ODataQuery.orderby`
44-
- :py:meth:`bcb.odata.ODataQuery.limit`
45-
- :py:meth:`bcb.odata.ODataQuery.skip`
46-
- :py:meth:`bcb.odata.ODataQuery.parameters`
47-
- :py:meth:`bcb.odata.ODataQuery.collect`
48-
- :py:meth:`bcb.odata.ODataQuery.show`
44+
- :py:meth:`bcb.odata.framework.ODataQuery.filter`
45+
- :py:meth:`bcb.odata.framework.ODataQuery.select`
46+
- :py:meth:`bcb.odata.framework.ODataQuery.orderby`
47+
- :py:meth:`bcb.odata.framework.ODataQuery.limit`
48+
- :py:meth:`bcb.odata.framework.ODataQuery.skip`
49+
- :py:meth:`bcb.odata.framework.ODataQuery.parameters`
50+
- :py:meth:`bcb.odata.framework.ODataQuery.collect`
51+
- :py:meth:`bcb.odata.framework.ODataQuery.show`
4952

5053
Aplicações
5154
----------
5255

56+
As APIs OData sem apresentam destas 2 maneiras:
57+
58+
- :ref:`EntitySets`: consultas estáticas sem parâmetros que retornam dados em formato tabular disponibilizados pela API.
59+
Exemplos de APIs: :ref:`Expectativas` e :ref:`Taxas de Juros`.
60+
- :ref:`FunctionImports`: consultas dinâmicas com parâmetros que retornam dados em formato tabular disponibilizados pela API.
61+
Um exemplo é a :ref:`API OData de Moedas`.
62+
63+
Identifica-se a maneira pela qual a API se apresenta utilizando o método :py:meth:`bcb.odata.api.BaseODataAPI.describe`
64+
das classes que herdam :py:class:`bcb.odata.api.BaseODataAPI`.
65+
5366
API de Expectativas
5467
^^^^^^^^^^^^^^^^^^^
5568

56-
Vamos ver como isso tudo funciona utilizando a API de expectativas.
69+
A API de Expectativas possui diversos *entity sets*.
70+
Utilizando o método ``describe`` visualizamos todos os *entity sets* disponibilizados pela API.
5771

5872
.. ipython:: python
5973
6074
from bcb import Expectativas
6175
em = Expectativas()
6276
em.describe()
6377
64-
``EntitySets``
65-
""""""""""""""
78+
A API de Expectativas possui 8 ``EntitySets``.
79+
Essa listagem traz os nomes dos ``EntitySets`` e ao passar um destes nomes para o método ``describe`` obtemos a
80+
descrição do ``EntitySet`` que é o *endpoint* que dá acesso a API.
81+
82+
EntitySets
83+
""""""""""
6684

67-
Vemos que na API de expectativas tem uma listagem de ``EntitySets``.
68-
``EntitySets`` são *endpoints* que retornam um conjunto de dados toda vez que
69-
são chamados.
85+
Cada ``EntitySet`` é um *endpoint* que retorna um conjunto de dados toda vez que são chamados.
86+
Utilizamos os método ``describe`` para obter informações sobre o que é retornado na solicitação ao *endpoint*.
7087

7188
Inspecionando o *endpoint* ``ExpectativaMercadoMensais``
7289

@@ -75,30 +92,33 @@ Inspecionando o *endpoint* ``ExpectativaMercadoMensais``
7592
em.describe('ExpectativaMercadoMensais')
7693
7794
78-
``EntityType``
79-
""""""""""""""
95+
O *endpoint* ``ExpectativaMercadoMensais`` retorna um conjunto de dados
96+
denominado ``br.gov.bcb.olinda.servico.Expectativas.ExpectativaMercadoMensal``, que é um ``EntityType``.
97+
Este ``EntityType`` tem as seguintes propriedades:
8098

81-
Os dados retornados por um ``EntitySet`` tem um tipo que é o seu ``EntityType``.
82-
Para o *endpoint* ``ExpectativaMercadoMensais`` o tipo retornado é
83-
``br.gov.bcb.olinda.servico.Expectativas.ExpectativaMercadoMensal`` que retorna as
84-
seguintes colunas (com seus respectivos tipos):
99+
- ``Indicador<str>``
100+
- ``Data<str>``
101+
- ``DataReferencia<str>``
102+
- ``Media<float>``
103+
- ``Mediana<float>``
104+
- ``DesvioPadrao<float>``
105+
- ``Minimo<float>``
106+
- ``Maximo<float>``
107+
- ``numeroRespondentes<int>``
108+
- ``baseCalculo<int>``
85109

86-
- Indicador<str>
87-
- Data<str>
88-
- DataReferencia<str>
89-
- Media<float>
90-
- Mediana<float>
91-
- DesvioPadrao<float>
92-
- Minimo<float>
93-
- Maximo<float>
94-
- numeroRespondentes<int>
95-
- baseCalculo<int>
110+
Note que cada propriedade tem um tipo associado.
111+
As propriedades são formatadas em colunas no DataFrame retornado como resultado da consulta.
112+
É muito importante conhecer as colunas, pois caso se queira realizar filtros ou ordenação nas
113+
consultas, estes são aplicados às propriedades.
96114

97-
É muito importante conhecer as colunas caso queira realizar filtros ou ordenação nas
98-
consultas.
115+
A utilização de filtros e ordenação na consulta é fundamental para a realização de consultas eficientes, pois estas
116+
operações são realizadas diretamente no processamento da API e isso reduz o volume de dados trafegados e,
117+
consequentemente, acelera a consulta.
99118

100-
Para realizar a consulta é necessário obter o objeto :py:class:`bcb.Endpoint`.
101-
Isso é feito executando o método :py:meth:`bcb.Expectativas.get_endpoint`.
119+
Para realizar uma consulta é necessário obter um objeto da classe :py:class:`bcb.odata.api.Endpoint`.
120+
Isso é feito chamando o método :py:meth:`bcb.odata.api.Expectativas.get_endpoint` com o nome do ``EntitySet`` desejado.
121+
Vamos utilizar o *endpoint* ``ExpectativaMercadoMensais`` como exemplo.
102122

103123
.. ipython:: python
104124
@@ -122,7 +142,7 @@ Note que como apenas o ``limit`` foi utilizado, o único
122142
parâmetro definido é o ``$top = 10`` indicando que apenas
123143
10 elementos serão retornados.
124144

125-
Todos os métodos de :py:class:`bcb.odata.ODataQuery` retornam a própria
145+
Todos os métodos de :py:class:`bcb.odata.framework.ODataQuery` retornam a própria
126146
instância do objeto, com excessão a ``show`` e ``collect``.
127147
Por essa razão é possível realizar chamadas encadeadas configurando
128148
a consulta.
@@ -156,7 +176,7 @@ API de Moedas
156176
^^^^^^^^^^^^^
157177

158178
Uma outra aplicação é com a API de Moedas que implementa a especificação OData.
159-
Utilizando a classe :py:class:`bcb.PTAX` temos:
179+
Utilizando a classe :py:class:`bcb.odata.api.PTAX` temos:
160180

161181
.. ipython:: python
162182
@@ -165,8 +185,8 @@ Utilizando a classe :py:class:`bcb.PTAX` temos:
165185
ptax.describe()
166186
167187
168-
``FunctionImports``
169-
"""""""""""""""""""
188+
FunctionImports
189+
"""""""""""""""
170190

171191
Note que essa API tem um ``EntitySet`` e seis ``FunctionImports``.
172192
A diferença entre eles é que os ``FunctionImports`` são funções
@@ -210,15 +230,15 @@ Classe ODataAPI
210230
O portal de Dados Abertos to Banco Central apresenta diversas APIs OData, são
211231
dezenas de APIs disponíveis.
212232
A URL com metadados de cada API pode ser obtida no portal.
213-
A classe ``ODataAPI`` permite acessar qualquer API Odata de posse da sua URL.
233+
A classe :py:class:`bcb.odata.api.ODataAPI` permite acessar qualquer API Odata de posse da sua URL.
214234

215235
Por exemplo, a API de estatísticas de operações registradas no Selic tem a seguinte URL::
216236

217237
https://olinda.bcb.gov.br/olinda/servico/selic_operacoes/versao/v1/odata/
218238

219239
que pode ser obtida no portal de dados abertos no `link <https://dadosabertos.bcb.gov.br/dataset/estatisticas-selic-operacoes>`_.
220240

221-
Essa API pode ser diretamente acessada através da classe ``ODataAPI``.
241+
Essa API pode ser diretamente acessada através da classe :py:class:`bcb.odata.api.ODataAPI`.
222242

223243
.. ipython:: python
224244
2 Bytes
Loading

0 commit comments

Comments
 (0)