CamaraDosDeputados / dados-abertos

Repositório do serviço de Dados Abertos da Câmara. Consulte as "Issues" para atendimento a dúvidas e sugestões.
http://dadosabertos.camara.leg.br
195 stars 13 forks source link

Como os JSONS de despesas dos deputados são atualizados? #337

Closed Victoreisdavid closed 7 months ago

Victoreisdavid commented 7 months ago

Eu estou baixando e carregando os jsons das despesas diretamente para um banco de dados sql. A minha dúvida é que ante ontem o JSON de 2023 havia mais de 6 milhões de linhas. Hoje eu fui baixar para ver as despesas atualizadas... e o JSON está com 4908254 linhas! mais de 2 milhões a menos que o anterior, mas deveria ser o "mais atualizado"!

Eu gostaria que me explicassem como é feito o processo de atualização diária das despesas, e como eu posso captar as despesas novas e diferenciar das que já possuo em meu banco de dados, já que nenhum dos campos possui um valor único (como os deputados que tem cada um o seu ID)! O que praticamente impossibilita formas de atualizar sem reescrever todas as despesas, e se de um dia para o outro está vindo com menos dados que o esperado, é sinal que vai haver perda de dados nesse processo.

Então.. poderiam me explicar como é feita a atualização do JSON? E como eu posso achar as despesas novas? visto que elas não têm um identificador.

Victoreisdavid commented 7 months ago

Aproveitando aqui, queria saber como vocês filtram as despesas para listar no serviço rest (pois vejo que nem todas as despesas dos arquivos aparecem nas respostas)! Pois eu tenho um projeto chamado FiscalizaJá, que faz consumo da API do dadosabertos e eu quero fazer meu próprio serviço que baixa os jsons das despesas e dos deputados e atualiza diariamente, pois assim tenho mais poder sobre como posso mexer com os dados, visto que os ratelimits e o CORS estão me atrapalhando bastante. Limitação essa que não existirá caso eu mantenha minha própria base de dados. Fora que consigo muito mais personalização.

EquipeDadosAbertosCD commented 7 months ago

Olá, Victor!

Os dados sobre as despesas dos parlamentares sob a Cota para Exercício da Atividade Parlamentar são extraídos de uma tabela de banco gerada diariamente por uma rotina de ETL, feita pela mesma área de TI da Câmara que cuida do sistema interno de cadastramento dessas despesas.

Essa diferença de quantidade de registros que você apontou é significativa e pode indicar algum problema nessa rotina de ETL ou apenas na aplicação do Dados Abertos que puxa esses dados e gera os arquivos de cada ano nos diferentes formatos. Foi no arquivo de qual(quais) ano(s) que você percebeu essa diferença de um dia para outro? Você pode verificar se o número de registros continua reduzido nos arquivos gerados hoje?

Na API, os dados sobre despesas são individualizados por deputado e, se não forem usados os parâmetros que especificam um intervalo de tempo, são retornadas apenas despesas registradas nos últimos seis meses. É bastante possível que manter uma base e um backend próprios seja mais adequado para a sua aplicação, e nesse caso o download dos arquivos do Dados Abertos para carga local é mesmo a opção recomendada.

Os dados a nós disponibilizados sobre essas despesas não têm mesmo identificação exclusiva para cada uma. Você pode tentar salvá-los em banco com um campo de auto-increment ou experimentar chaves compostas, mas observe que já de origem os dados não são mantidos de forma incremental (afinal, a tabela é toda gerada outra vez a cada dia) e não há como garantirmos que um registro existente hoje continuará existindo amanhã e com os mesmos valores.

Abraço e obrigado pelo contato!

Fabricio Rocha Equipe Dados Abertos - Câmara

Victoreisdavid commented 7 months ago

Olá Fabricio!

A diferença aconteceu nos dados das despesas de 2023. Nos dados baixados hoje o número de linhas está acima do esperado (6 milhões), não percebi nenhuma redução até agora.

A solução que encontrei para não haver duplicidades foi fazer um campo na minha tabela com valores únicos, que recebe todos os valores do json daquela despesa concatenados por -. Gambiarra mas funciona bem.

Aproveitando que estou aqui, queria saber de onde vem o "ultimoStatus" que retorna do endpoint de informações de um deputado? Eu tentei caçar essas informações nos dados para download mas não achei nada 😅. Se for melhor para vocês, eu abro outra issue para essa questão.

EquipeDadosAbertosCD commented 7 months ago

Salve, Victor!

Hum.... então pode ter havido um problema temporário na geração da tabela no banco ou na geração dos arquivos pelo Dados Abertos.

Sobre o ultimoStatus, eu imagino que você esteja se referindo ao campo do retorno de /deputados/{id}, certo? Essas informações são aquelas sujeitas a variações ao longo do tempo, como o nome parlamentar, o partido, situação de exercício, etc. Nós estamos em fase final de testes da publicação do histórico de variações dessas informações, tanto na API quanto como arquivos. Em breve você vai encontrar na página de arquivos quando procurar outra vez!

Abraço e obrigado!

Fabricio Rocha Equipe Dados Abertos - Câmara

Victoreisdavid commented 7 months ago

Ok... Obrigado pela atenção!