[Gastosabertos-dev] CSV -> Restful API

Andres MRM andres em inventati.org
Quarta Março 25 00:04:21 UTC 2015


Me pareceu algo bem útil. Tão útil que fico pensando se já não há mesmo algo
do tipo... Mas confesso que nunca vi. Ou pelo menos não me lembro...

A questão é que talvez as suposições que você faz para interpretar os dados
talvez limitem a um tipo de base específico. Será? Teria que pegar alguns
exemplos de bases para testar a ideia. E ver o quanto conseguimos abstrair...

Sobre a questão da hierarquia, não sei se entendi direito, mas acho que você
quis dizer:

	 Se número de linhas *diferentes* em W for maior que em X, pode-se supor
	 que X está numa hierarquia acima de W.

Ex.:

X	W
-----
A	a
A	z
B	b
B	y

É isso?




Quoting Luiz Armesto (2015-03-24 20:40:31)
> Achei a ideia bem interessante e útil. Também me parece que é possível
> descrever bem o processo de criação de uma API para fornecer dados de um CSV e
> com isso tentarmos automatizar.
> 
> As inferências de tipos de dados das colunas e de quais possuem identificador
> único parece ser bem tranquilo.
> Quais colunas possuem dados categóricos também não acho que seria difícil.
> 
> A parte de achar a hierarquia pode ser meio complicado. Precisaria mesmo de
> confirmação de um usuário. 
> Não sei se compreendi direito a ideia da contagem das colunas. Tem algum
> exemplo simples para demonstrar? 
> 
> Em uma hierarquia simples, se entendi bem, acho que essa contagem funcionaria
> com uma frequência boa, mas em cenários mais complexos não sei.
> 
> Sobre uma possível arquitetura, acho que seria interessante desmembrar essa
> ferramenta em duas, que formariam um pipeline.
> 
> Teriamos uma ferramenta que recebe o CSV e uma espécie de schema (um json por
> exemplo) -- o schema descreveria o modelo do banco de dados, como processar o
> CSV para popular o banco e quais os endpoints serão criados, uma espécie de
> receita --  e a partir dele criaria os modelos e a API em si. Uma outra
> ferramenta, separada, que seria a de inferência. Ela receberia o CSV, faria
> todo o trabalho de inferência e confirmação e teria como saída esse schema. O
> que acham?
> 
> []'s
> 
> 
> 2015-03-24 18:38 GMT-03:00 Edgar Zanella Alvarenga <e em vaz.io>:
> 
>     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.
>     _______________________________________________
>     Gastosabertos-dev mailing list
>     Gastosabertos-dev em lists.okfn.org
>     https://lists.okfn.org/mailman/listinfo/gastosabertos-dev
> 
> 
> 
> 
> --
> Luiz Armesto



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