[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