You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/odata.rst
+55-31Lines changed: 55 additions & 31 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ OData
5
5
Diversas APIs disponíveis no `portal de dados abertos <https://dadosabertos.bcb.gov.br/>`_ do Banco Central
6
6
implementam o protocolo `OData <https://www.odata.org/>`_, são centenas de APIs.
7
7
8
-
O ``python-bcb`` tem algumas classes que implementam algumas APIs OData:
8
+
O ``python-bcb`` tem algumas classes que implementam APIs OData:
9
9
10
10
- :py:class:`bcb.odata.api.Expectativas`: Expectativas de mercado para os indicadores macroeconômicos da Pesquisa Focus
11
11
- :py:class:`bcb.odata.api.PTAX`: Dólar comercial
@@ -44,13 +44,15 @@ o nome do *endpoint*.
44
44
45
45
pix.describe('PixLiquidadosAtual')
46
46
47
-
Vemos que o *endpoint* ``PixLiquidadosAtual`` retorna uma tabela com 4 propriedades:
47
+
Vemos que o *endpoint* ``PixLiquidadosAtual`` retorna 4 propriedades:
48
48
49
49
- ``Data<datetime>``: data das operações
50
50
- ``Quantidade<int>``: quantidade de operações realizadas na data
51
51
- ``Total<float>``: financeiro das operações realizdas na data
52
52
- ``Media<float>``: média das operações realizadas na data
53
53
54
+
As propriedades são formatadas como colunas em um DataFrame.
55
+
54
56
Para acessar os dados deste *endpoint* é necessário obter um objeto com o *endpoint* e executar uma ``query`` nesse
55
57
objeto.
56
58
O método ``get_endpoint`` retorna um objeto da classe :py:class:`bcb.odata.api.Endpoint`.
@@ -67,45 +69,67 @@ A consulta retorna um DataFrame pandas onde as colunas são as propriedades do *
67
69
Veremos abaixo, com mais detalhes, como realizar consultas nas APIs e quais os tipos de *endpoints* disponíveis
68
70
(``EntitySets`` e ``FunctionImports``).
69
71
70
-
.. TODO: fazer uma sessão, Como Realizar Consultas
72
+
Como Realizar Consultas em APIs OData
73
+
-------------------------------------
74
+
75
+
As consultas são realizadas através do método ``query`` da classe :py:class:`bcb.odata.api.Endpoint`.
76
+
Este método retorna um objeto :py:class:`bcb.odata.framework.ODataQuery` que abstrai a consulta e permite executar
77
+
algumas firulas como: filtros e ordenação.
78
+
A classe :py:class:`bcb.odata.framework.ODataQuery` tem os seguintes métodos:
79
+
80
+
- :py:meth:`bcb.odata.framework.ODataQuery.filter`: define filtros na consulta, com uma clausula ``where`` no SQL.
81
+
- :py:meth:`bcb.odata.framework.ODataQuery.select`: seleciona as propriedades retornadas pela consulta.
82
+
- :py:meth:`bcb.odata.framework.ODataQuery.orderby`: ordena a consulta pelas propriedades.
83
+
- :py:meth:`bcb.odata.framework.ODataQuery.limit`: limita os resultados a ``n`` registros.
84
+
- :py:meth:`bcb.odata.framework.ODataQuery.skip`: *pula* os ``n`` primeiros registros da consulta.
85
+
- :py:meth:`bcb.odata.framework.ODataQuery.parameters`: *endpoints* do tipo ``FunctionImports`` possuem parâmetros que são definidos por este método.
86
+
- :py:meth:`bcb.odata.framework.ODataQuery.collect`: o *framework* tem uma abordagem *lazy*, dessa forma, este método realiza a consulta trazendo os dados e retornando um DataFrame.
87
+
- :py:meth:`bcb.odata.framework.ODataQuery.show`: imprime a estrutura da consulta.
71
88
72
-
Classe :py:class:`bcb.odata.api.BaseODataAPI`
73
-
---------------------------------------------
89
+
Os métodos ``filter``, ``select``, ``orderby``, ``limit``, ``skip`` e ``parameters`` retornam o objeto
90
+
:py:class:`bcb.odata.framework.ODataQuery`, e isso permite a realização de chamadas aninhadas que compõem a consulta.
74
91
75
-
Todas as classes que implementam um API OData herdam de :py:class:`bcb.odata.api.BaseODataAPI`, que faz a integração
76
-
com as APIs OData e realiza consultas na API retornando as propriedades em um ``DataFrame``.
92
+
Por exemplo, na consulta do PIX, as datas não estão ordenadas, temos dias de 2021, 2022 e 2023 nos 10 registros
93
+
retornados.
94
+
Vamos ordernar pela propriedade ``Data`` de forma decrescente.
95
+
96
+
.. ipython:: python
77
97
78
-
A classe :py:class:`bcb.odata.api.BaseODataAPI` possui apenas 2 métodos:
0 commit comments