splor-mg / dados-sigplan-planejamento

Conjunto de dados do PPAG Planejamento
0 stars 0 forks source link

Chave primária composta aceita valores NULL #49

Closed fjuniorr closed 2 months ago

fjuniorr commented 10 months ago

Os problemas na versão https://github.com/splor-mg/ppag-planejamento-dados-2024/tree/a950492b20bd810485fcc92e22570386d268e11e da base

Os programas que tiveram as áreas temáticas alteradas, estão sem diretriz estratégica. Eles precisam ficar com as diretrizes da época do projeto de lei, vou mandar na planilha em anexa quais são as de cada programa.

Programas: 44, 148, 172

As diretrizes estão no "sistema" na parte que vc visualiza os dados do sistema, mas não aprece quando clica no botão de área, objetivo e diretrizes assim como nas bases.

Além disso, o programa 44 também parece que está com linha duplicada na base programas. Você ajusta isso também?

Deveriam ter sido apontados pela validação mas não foram por causa de um bug nas dependências do projeto https://github.com/frictionlessdata/frictionless-py/issues/1623

fjuniorr commented 10 months ago

Vale a pena registrar o motivo pelo qual o teste check_valores_sigplan_programas não conseguiu pegar os valores duplicados relatados pela DCPPN:

Além disso, o programa 44 também parece que está com linha duplicada na base programas.

Como a base programas pode ter corretamente linhas que duplicam o valor total do programa, o teste remove linhas duplicadas antes de fazer a comparação com a base acoes_planejamento

fjuniorr commented 3 months ago

@hslinhares o bug da frictionless aqui é que uma coluna que é listada como chave primária não poderia aceitar valores NULL .

Como o bug ainda não foi corrigido (que seria nossa primeira opção) as outras alternativas que temos é:

  1. Alterar o schema adicionando uma restrição unique em cada coluna que está listada como chave primária
  2. Utilizar as funções validate::is_unique e is.na com o pacote validate do R para criar uma função de teste de chaves compostas no pacote https://github.com/splor-mg/checks-planejamento

Acho que a segunda opção é melhor porque também serve como aprendizado.