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.