[Gastosabertos-dev] CSV -> Restful API

Edgar Zanella Alvarenga e em vaz.io
Terça Março 24 21:38:36 UTC 2015


Eu comentei no email anterior uma idéia de ferramenta para gerar API's
RESTful a partir de um CSV. Deixei para descrever em detalhes num outro
email, que é este:

  Criamos para a visualização da página da Receita uma API contruída
  em cima do Flask utilizando a extensão RESTful. Se quisermos criar uma
  nova API a partir de um de nossos outros dados iremos provavelmente
  replicar boa parte do trabalho que tivemos, copiando e colando código,
  mudando nomes aqui e acolá, tirando um argumento de busca, adicionando
  outros. Me pareceu que todo esse processo poderia ser automatizado de
  certa forma.

Pensando nisso acabei pensando no processo para criação da API e tentei
generalizar parcialmente o que foi feito. Me parece que se tivermos um
CSV deveremos:

  1 Identificar os tipos das colunas.
  2 Identificar quais coluans possivelmente possuem um identificador 
único.
  3 Quais colunas possuem dados categóricos.
  4 Quais colunas possuem algum tipo de relação hierárquica.

Todos os passos acima podem ser automatizados ou serem realizados com 
ajuda
de um humano, perguntando se as inferências realizadas foram corretas 
ou não.

O passo 4 pode ser feito de forma algorítmica mas com confirmação do 
usuário
analisando:

  * Coluna X possui quantas linhas no CSV?
  * Coluna W possui quantas linhas no CSV?

Se número de linhas de W for maior que X, pode-se supor que X está numa 
hierarquia
acima de W. O número de linhas de W será maior ou igual ao número de 
linhas de X,
conseguem compreender?

Resumindo, a idéia é que depois de poucos passos, após uma inferência 
automatizada
seja criado um modelo no banco de dados e diversos endpoints para ele. 
Essa ferramenta
iria muito além de dados de gastos públicos, o que é excelente se 
formos pensar
em termos estratégicos para conseguirmos mais desenvolvedores 
interessados no projeto.
De certa forma isso é o que é feito atualmente no OpenSpending, mas a 
parte de inferência
é inexistente, e o modelo de dados que geram é muito restrito, 
limitando-se a um
modelo possuindo uma coluna temporal e uma com informação float.

Eu dei uma pesquisada rápida a algum tempo atrás por algo desse tipo e 
não obtive muitos
resultados, apenas discussões onde técnicos ou developers demonstraram 
ter interesse
que uma ferramenta do gênero existisse. O máximo que encontrei foi 
isso:

  * https://github.com/project-open-data/csv-to-api

O que acham? Ambicioso demais? Genérico demais? Too much work?

Idéias, críticas e sugestões, não sejam polidos!
E.



Mais detalhes sobre a lista de discussão Gastosabertos-dev