/monitor-cidadao-dados

A camada de dados do Monitor Cidadão consiste em uma arquitetura que fornece meios para a extração e tratamento de dados provindos de diversas fontes do setor público.

Primary LanguageRGNU Affero General Public License v3.0AGPL-3.0

Monitor Cidadão - Camada de Dados

O Monitor Cidadão é um sistema desenvolvido através da parceria entre a CampinaTec e o laboratório Analytics, da Universidade Federal de Campina Grande-PB, com finalidade de possibilitar aos cidadãos o acompanhamento dos contratos realizados pelos municípios do estado da Paraíba.

Camada de Dados

A Camada de dados consiste em uma arquitetura que fornece meios para a extração e tratamento de dados provindos de diversas fontes. Essa estrutura é formada por quatro subcategorias distintas com suas próprias responsabilidades:

  • Fetch : responsável por buscar os dados em suas fontes;
  • Tradutor: responsável por traduzir os dados para um formato tabular - especialmente útil para dados que são disponibilizados em formato .csv;
  • Transformador: realiza manipulações nos dados como, por exemplo, joins;
  • Preditor: encapsula diversas funções para a realização das predições em torno dos contratos públicos.

Abaixo é apresentado o fluxo de dados geral das camadas citadas acima.

Fluxo de dados

Tecnologias/framework usadas

Desenvolvido em:

Setup

Os serviços deste módulo utilizam docker para configuração do ambiente e execução do script. Instale o docker, docker-compose e tenha certeza que você também tem o Make instalado.

Adicione os seguintes arquivos com variáveis de ambiente e credenciais:

Como usar?

Nesta camada o make é utilizado como facilitador para execução. Abaixo estão descritos os passos necessários para importar os dados para o banco de dados Analytics (também chamado de AL_DB) e Monitor Cidadão (também chamado de MC_DB):

Passos comuns a ambos os bancos:

  1. Faça o build das imagens necessárias com sudo make build;
  2. Crie e inicie os containers do docker com sudo make up;
  3. Obtenha os dados através do sudo make fetch-data. Nesta etapa você também pode testar a integridade dos dados obtidos utilizando os testes unitários de cada tabela com sudo docker exec -it fetcher sh -c "Rscript tests/<nome-da-tabela>.R";
  4. Traduza e transforme os dados colhidos sudo make transform-data;

Para o AL_DB:

  1. Crie as tabelas no banco AL_DB com sudo make feed-al-create;
  2. Agora importe os dados para as tabelas do banco com sudo make feed-al-import;
  3. Você pode verificar se a(s) tabela(s) estão no banco com sudo make feed-al-shell e \dt.

Geração das previsões:

  1. Gere as features da previsão com sudo make gera-feature vigencia=<encerrados, vigentes e todos> data_range_inicio=<2012-01-01> data_range_fim=<2018-01-01>;
  2. Gere o feature set da previsão com sudo make gera-feature-set tipo_construcao_features=<recentes>;
  3. Gere o experimento com as informações do risco com sudo make gera-experimento tipo_contrucao_feature_set=<recentes>.

Para o MC_DB:

  1. Crie as tabelas no banco MC_DB com sudo make feed-mc-create;
  2. Importe os dados das features para as tabelas do banco com sudo make feed-mc-import-feature;
  3. Importe os dados do features set para as tabelas do banco com sudo make feed-mc-import-feature-set;
  4. Agora importe os dados do experimento para as tabelas do banco com sudo make feed-mc-import-experimento;
  5. Você pode verificar se a(s) tabela(s) estão no banco com sudo make feed-mc-shell e \dt.

Caso você queira executar os comandos docker diretamente, confira o código correspondente a seu comando no arquivo Makefile. Abaixo estão todos os comandos disponíveis para serem executados com sudo make <Comando>:

Comando Descrição
help Mostra esta mensagem de ajuda
build Realiza o build das imagens com as dependências necessárias para a obtenção dos dados.
up Cria e inicia os containers.
stop Para todos os serviços.
clean-volumes Para e remove todos os volumes.
enter-fetcher-container Abre cli do container fetcher
fetch-data Obtem dados
enter-transformer-container Abre cli do container transformador
transform-data Traduz e transforma os dados colhidos
enter-feed-al-container Abre cli do container feed-al
feed-al-create Cria as tabelas do Banco de Dados Analytics
feed-al-import Importa dados para as tabelas do Banco de Dados Analytics
feed-al-clean Dropa as tabelas do Banco de Dados Analytics
feed-al-shell Acessa terminal do Banco de Dados Analytics
gera-feature Gera features
gera-feature-set Gera conjunto de features
gera-experimento Gera previsão de risco
enter-feed-mc-container Abre cli do container feed-mc
feed-mc-create Cria as tabelas do Banco de Dados Monitor Cidadão
feed-mc-import-feature Importa features para o Banco de dados Monitor Cidadão
feed-mc-import-feature-set Importa features set para o Banco de dados Monitor Cidadão
feed-mc-import-experimento Importa experimento para o Banco de dados Monitor Cidadão
feed-mc-clean Dropa as tabelas do Banco de Dados Monitor Cidadão
feed-mc-shell Acessa terminal do Banco de Dados Monitor Cidadão

License

GNU Affero General Public License v3.0 © Monitor Cidadão