[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