Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Filtro de DataReferencia não está funcionando #9

Open
guilhermeparreira opened this issue May 12, 2023 · 2 comments
Open

Filtro de DataReferencia não está funcionando #9

guilhermeparreira opened this issue May 12, 2023 · 2 comments

Comments

@guilhermeparreira
Copy link

Olá, ao fazer uma consulta na Entity Expectativas eu não consigo filtrar pela DataReferencia. Veja:

from bcb import Expectativas
ep = em.get_endpoint("ExpectativaMercadoMensais")
dtest = (ep.query().filter(ep.DataReferencia <= '2022-01-01').collect())
dtest['DataReferencia'].max()
'12/2024'

A DataReferencia retornada é maior que a solicitada. Estou fazendo algo errado?

# Obs.: Para o campo `Data` funciona
dtest = (ep.query().filter(ep.Data <= '2010-01-01').collect())
dtest['Data'].max()
'2009-12-31'
@apsvieira
Copy link

@guilhermeparreira Parece ser por conta de uma diferença na formatação do valor DataReferencia.

Enquanto a Data é especificada em formato 'YYYY-mm-dd', a DataReferencia é especificada em formato 'mm/YYYY'.

Exemplo:

from bcb import Expectativas
expec = Expectativas()
mensais = expec.get_endpoint('ExpectativaMercadoMensais')
data = (
    mensais
    .query()
    .filter(mensais.DataReferencia <= '12/2022')
    .collect()
)
data.DataReferencia.max()

'12/2022'

@wilsonfreitas
Copy link
Owner

Uma forma de contornar isso é utilizar um datetime nos filtro de data, com DataReferencia.
Talves a alteração do @apsvieira (Issue #3) ajude com isso.

Seria algo como

from datetime import datetime
from bcb import Expectativas
expec = Expectativas()
mensais = expec.get_endpoint('ExpectativaMercadoMensais')
data = (
    mensais
    .query()
    .filter(mensais.DataReferencia <= datetime(2022,12,1))
    .collect()
)
data.DataReferencia.max()

isso é bom pq o usuário não precisa conhecer a formatação de datas da API.
Mas as formatações mudam, de um endpoint para outro, então é preciso mapear isso.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants