Skip to content

Commit 5a2163d

Browse files
committed
Docs updated
1 parent 8a09d1b commit 5a2163d

2 files changed

Lines changed: 69 additions & 5 deletions

File tree

95 Bytes
Loading

docs/odata.rst

Lines changed: 69 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,68 @@ mas não a executa.
150150
.limit(10)
151151
.show())
152152
153+
154+
Filtrando Dados
155+
^^^^^^^^^^^^^^^
156+
157+
Os filtros são executados pelo método ``filter`` e aplicados às propriedades do *endpoint*, por isso é necessário
158+
conhecê-lo, o que deve ser feito com o método ``describe``.
159+
160+
.. ipython:: python
161+
162+
from bcb import Expectativas
163+
em = Expectativas()
164+
em.describe('ExpectativasMercadoTop5Anuais')
165+
166+
O *endpoint* ``ExpectativasMercadoTop5Anuais`` da API de Expectativas possui a propriedade ``Indicador``, do tipo
167+
``str``.
168+
Vamos filtrar os dados com a propriedade ``Indicador`` igual a ``IPCA``.
169+
Como o tipo dessa propriedade é ``str``, utilizamos uma string no filtro e o operador ``==``, que representa igualdade.
170+
171+
.. ipython:: python
172+
173+
ep = em.get_endpoint('ExpectativasMercadoTop5Anuais')
174+
query = ep.query().filter(ep.Indicador == 'IPCA').limit(10)
175+
query.show()
176+
177+
O método ``show`` apresenta os parâmetros da *query* formatados, com isso podemos visualizar como os parâmetros da
178+
consulta serão enviados à API.
179+
Note que o operador ``==`` foi convertido para ``eq``.
180+
Podemos utilizar todos os operadores de comparação nos filtros.
181+
182+
.. ipython:: python
183+
184+
query.collect()
185+
186+
Mais filtros podem ser adicionados ao método ``filter``, e também podemos aninhar chamadas do método ``filter``.
187+
188+
.. ipython:: python
189+
190+
query = (ep.query()
191+
.filter(ep.Indicador == 'IPCA', ep.DataReferencia == 2023)
192+
.filter(ep.Data >= '2022-01-01')
193+
.filter(ep.tipoCalculo == 'C'))
194+
query.show()
195+
query.collect()
196+
197+
Todos os filtros estão no atributo ``$filter`` da consulta e são concatenados com o operador booleano ``and``.
198+
199+
É necessário conhecer o tipo da propriedade para saber como passar o objeto para a consulta.
200+
Os tipos de propriedade podem ser: str, float, int e datetime.
201+
Por exemplo, na API do PIX, a propriedade ``Data`` é do tipo ``datetime`` e por isso é necessário passar um
202+
objeto ``datetime`` para o método ``filter``.
203+
204+
.. ipython:: python
205+
206+
ep = pix.get_endpoint("PixLiquidadosAtual")
207+
(ep.query()
208+
.filter(ep.Data >= datetime(2023, 1, 1))
209+
.limit(10)
210+
.show())
211+
212+
O objeto ``datetime`` é formatado como data na consulta, note que não há aspas na definição do filtro.
213+
214+
153215
Tipos de *endpoints*
154216
^^^^^^^^^^^^^^^^^^^^
155217

@@ -164,24 +226,26 @@ A API do PTAX, por exemplo
164226
ptax = PTAX()
165227
ptax.describe()
166228
167-
Esta API tem 1 ``EntitySet`` e 6 ``FunctionImports`` e também utilizamos o método ``describe`` para visualizar a
168-
estrutura destes *endpoints*.
229+
Esta API tem 1 ``EntitySet`` e 6 ``FunctionImports``.
230+
Assim como os ``EntitySets``, os ``FunctionImports`` também retornam dados em formato tabular.
231+
A principal diferença entre os ``EntitySets`` e ``FunctionImports`` é que estes possuem parâmetros, como uma função, e
232+
estes parâmetros devem ser definidos para que a consulta seja realizada.
233+
169234
Vamos ver o *endpoint* ``CotacaoMoedaPeriodo``
170235

171236
.. ipython:: python
172237
173238
ptax.describe("CotacaoMoedaPeriodo")
174239
175-
A principal diferença entre os ``FunctionImports`` e ``EntitySets`` é que estes possuem parâmetros.
176-
Neste exemplo o *endpoint* tem 3 parâmetros:
240+
Este *endpoint* tem 3 parâmetros:
177241

178242
- codigoMoeda <str>
179243
- dataInicial <str>
180244
- dataFinalCotacao <str>
181245

182246
Para conhecer como os parâmetros devem ser definidos é necessário ler a documentação da API.
183247
Eventualmente a definição dos parâmetros não é óbvia.
184-
Por exemplo, neste *endpoint*, os parâmetros ``dataInicialCotacao`` e ``dataFinalCotacao`` são formatados com
248+
Por exemplo, neste *endpoint*, os parâmetros ``dataInicial`` e ``dataFinalCotacao`` são formatados com
185249
mês-dia-ano (formato americano), ao invés de ano-mês-dia (formato ISO), e como o tipo dos parâmetros é ``str``,
186250
uma formatação incorreta não retorna um erro, apenas retorna um DataFrame vazio.
187251

0 commit comments

Comments
 (0)