splor-mg / atividades

Gestão de tarefas
0 stars 0 forks source link

Criar data package para documentação das fontes de dados do relatório operacional #10

Closed fjuniorr closed 1 year ago

fjuniorr commented 1 year ago

@hslinhares a tarefa aqui é criar um data package contendo a documentação de todos os arquivos que são utilizados como fonte de dados para o Relatório Operacional.

A gente vai utilizar essa documentação pra confirmar se todos os campos do Armazém utilizados no Relatório Operacional estão disponíveis no Portal de Dados Abertos (que já possuem data packages associados).

Além disso, vai servir como forma de você se familiarizar com as especificações frictionless que eventualmente vamos utilizar em nossos fluxos.

Depois de uma breve navegação no site principal do projeto Frictionless Data sugiro você assistir os seguintes vídeos (em ordem):

E por fim instalar[^1] o pacote python frictionless-py e seguir o tutorial Basic Examples.

[^1]: Se familiarize com o conceito e utilização de ambientes virtuais usando o pacote venv

hslinhares commented 1 year ago

O relatório operacional é um painel feito no aplicativo qlikview alimentado por bases do armazém SIAFI e SIAD em formato .xls e.xlsx, atualizadas diariamente.

Por uma questão de limitação do armazém, algumas bases como a de execução orçamentária (fluxo de empenho, liquidação e pagamento) precisam ser divididas por mês, sendo o agrupamento das mesmas feito durante a carga pelo aplicativo qlikview.

Como o objetivo deste trabalho é criar um data package das bases, que consiste basicamente em criar título e descrição para os rótulos das colunas, foi utilizado apenas a base de um único mês para cada um dos fluxos, uma vez que os rótulos das colunas são idênticos em todos os meses.

Passo a passo:

Após instalar o pacote frictionless-py e seguir o tutorial Basic Examples, mais especificamente os comandos da parte Describing a Package, o resultado foi o relatorio_operacional.package.yaml.

fjuniorr commented 1 year ago

Como o objetivo deste trabalho é criar um data package das bases, que consiste basicamente em criar título e descrição para os rótulos das colunas, foi utilizado apenas a base de um único mês para cada um dos fluxos, uma vez que os rótulos das colunas são idênticos em todos os meses.

De fato pra gente entender o schema (ie. título e descrição para os rótulos das colunas) não precisamos de repetir todos os meses. No entanto, como cada recurso aponta a localização do arquivo de dados, pra gente efetivamente usar esse data package nas nossas pipelines vamos precisar de documentar tudo.

Pra evitar a repetição do schema a gente tem duas alternativas:

  1. Armazenar o table schema em arquivo externo
  2. Inserir múltiplos arquivos na propriedade path do recurso

Particularmente eu acho a segunda alternativa mais elegante, mas o suporte das ferramentas tende a ser pior.

Vamos revisitar essa questão criando um data package com a segunda alternativa e testando se as funcionalidades de leitura e validação funcionam para os pacotes frictionless-py e frictionless-r.

Faz uma leitura do issue https://github.com/transparencia-mg/issues-dadosmg-legado/issues/12 pra solidificar essas questões e depois cria um data package completo no repo https://github.com/splor-mg/roperacional-dados usando um pull request.

hslinhares commented 1 year ago

Verifiquei que as bases anteriores a 2019 do relatório operacional não constam salvas no servidor. Apenas arquivos .qvd que são os arquivos já comprimidos pelo qlikview. Não as encontrei também no meu computador. Deste modo irei baixar as bases de 2017, 2018 e 2020. Esta última por estarem apresentando divergência em relação ao armazém por alguma modificação no armazém por motivo desconhecido.

Atualizar as bases 2020 já estavam no issue 26

hslinhares commented 1 year ago

Decidimos pelo fechamento deste issue porque que este projeto vai ser dividido em vários outros. Serão criados datapackages para cada fluxo de dados do SIAFI e SIAD (Credito, Execução, Cota, Restos a Pagar) ou de outras fontes (reestimativa, programações anuais, e etc.)