Open turicas opened 4 years ago
Olá turicas, eu utilizei o page_size=10000 para reduzir a paginação da sua API.
No momento, você pode selecionar no mapa tanto uma cidade ou estado, por isso não filtrei os dados apenas por município (afim de reduzir roundtrips para seu servidor caso o usuário selecione um estado por exemplo).
Sobre o is_last, seria possível incluir um filtro para obter registros até uma data X? O is_last é perfeito para obter dados de hoje, porém eu também inclui um novo campo no mapa para o usuário selecionar uma data para carregar a situação do Brasil em qualquer dia do passado, e o is_last só funciona se o usuário escolher a data de hoje :/
Eu sei que se eu usar o campo date=????-??-??, ele me mostra exatamente os casos desse dia, porém para ficar perfeito nesta API, esse filtro deveria ser parecido com o is_last mas para uma data específica no passado, retornando inclusive, cidades com ocorrencias antes dessa data.
@endoedgar isso infelizmente ainda não temos no backend do Brasil.IO. O is_last
não inclui apenas os dados de hoje: ele inclui o registro mais recente para aquele estado/município (pode ter sido hoje ou não). Se você não vai usar os filtros da API talvez seja melhor baixar os dados completos.
Então turicas, eu consigo utilizar o is_last para data de hoje: Por exemplo na cidade de SP se eu pesquisar com is_last habilitado
GET https://brasil.io/api/dataset/covid19/caso/data?city=São+Paulo&is_last=True
o seguinte resultado aparece:
{
"city": "São Paulo",
"city_ibge_code": "3550308",
"confirmed": 1044,
"confirmed_per_100k_inhabitants": 8.52104,
"date": "2020-03-27",
"death_rate": 0.0594,
"deaths": 62,
"estimated_population_2019": 12252023,
"is_last": true,
"place_type": "city",
"state": "SP"
}
O que é perfeito! Consigo utilizar esse código numa boa, e até realizar requests subsequentes mais completos caso o usuário clique numa cidade por exemplo. Porém se o usuário escolher a data de ontem por exemplo, e eu pesquisar is_last true com a data de ontem utilizando o seguinte request:
GET https://brasil.io/api/dataset/covid19/caso/data?city=São+Paulo&is_last=True&date=2020-02-26
O resultado é:
"results": []
O que é compreensível do ponto de vista técnico, porém não é o último resultado desse dia entende?
Eu posso fazer o download do arquivo completo numa boa também :), mas é só esse o problema do front-end não poder utilizar o filtro de forma mais eficiente.
Colocar is_last
para datas anteriores é algo complexo, pois pode ser que não tenhamos o dado na data exatamente anterior. Por isso, o que recomendo é você criar seu próprio is_last
no frontend:
is_last
state
, city
e place_type
e para cada grupo, defina que o que possui a maior data é o que terá is_last=True
(os outros serão necessariamente is_last=False
).
Para buscar os dados de maneira mais otimizada na API você pode passar alguns filtros via query string, como:
is_last=True
: devolve apenas as últimas versões de cada município/estadoplace_type=city
: devolve apenas dados dos municípiospage_size=10000
: devolve no máximo 10k registros (se você filtrar apenas pelos municípios e apenas a última versão do dado, como temos 5570 municípios, você nunca precisará paginar se passar esse valor).