[Gastosabertos-dev] CSV -> Restful API

Edgar Zanella Alvarenga e em vaz.io
Quarta Março 25 00:19:47 UTC 2015


On 24/03/2015 21:04, Andres MRM wrote:
> 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...

Eu também pensei o mesmo mas não tive muito sucesso encontrando. Se 
acharem
mandem pra lista! Achei discussões no hackernews ou reddit, mas nenhum 
projeto
concreto.

> 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...

A idéia é que mesmo as inferências poderiam ser modulares, possuir uma 
classe
pra cada tipo de coluna e poderíamos expandir o sistema com mais 
classes, num
modelo estilo plugins.

> 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?

Isso! Exatamente o que quis dizer. Neste caso teríamos uma hierarquia 
clara
em X -> W, com X possuindo dois tipos (A e B) e W quatro (a, z 
subníveis de A;
b, y subníveis de B).

E.

>
>
>
> 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
> _______________________________________________
> Gastosabertos-dev mailing list
> Gastosabertos-dev em lists.okfn.org
> https://lists.okfn.org/mailman/listinfo/gastosabertos-dev




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