@@ -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+
153215Tipos 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+
169234Vamos 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
182246Para conhecer como os parâmetros devem ser definidos é necessário ler a documentação da API.
183247Eventualmente 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
185249mês-dia-ano (formato americano), ao invés de ano-mês-dia (formato ISO), e como o tipo dos parâmetros é ``str ``,
186250uma formatação incorreta não retorna um erro, apenas retorna um DataFrame vazio.
187251
0 commit comments