basedosdados / pipelines

🔀 Orquestrador de fluxos de captura, ingestão e tratamento de dados da BD
https://basedosdados.github.io/pipelines/
33 stars 13 forks source link

# bases com datachecks #620

Open laura-l-amaral opened 8 months ago

laura-l-amaral commented 8 months ago
laura-l-amaral commented 8 months ago

Temos os seguintes campos para preenchimento do metadado Quality Check:

Existe a possibilidade de implementar um fluxo no prefect para ler e completar os metadados dos testes aplicados?

O uso dbt e prefect não facilita capturar os resultados e metadados de cada teste, o que torna o processo trabalho demais se o objetivo é só saber quais bases a gente passou quality-checks.

Gostaria de não complicar muito o processo de capturar esse dado.

Uma alternativa que me parece boa:

Gosto dessa opção pq dessa maneira, resolvemos o problema de maneira relativamente rápida, sem aumentar o trabalho dos analistas, ao mesmo tempo que deixamos as coisas bem padronizadas e que facilitam mudanças futuras. Tendo esse metadado preenchido conseguimos acompanhar quais são bases com datachecks direto dentro do metabase!

Outros passos dentro dessa alternativa:

@rdahis o que acha?

rdahis commented 8 months ago

Primeiro, estou adorando essas descrições longas facilitando o trabalho assíncrono aqui. 👍

Pensamentos:

@d116626 tem alguma opinião também? Tem alguma ferramenta out-of-the-box capaz de entregar toda essa flexibilidade que gostaríamos, sem ter que reinventar a roda aqui?

laura-l-amaral commented 8 months ago

Vou numerar os pontos para responder mais diretamente

  1. ok
  2. ok
  3. Acho que a gente precisa primeiro alinhar o objetivo da discussão aqui.

O que eu tinha imaginado nesse indicador é acompanhar quantas bases a gente parou para passar quality checks mas pensando nos dados, não nos metadados. Se nesse indicador incluirem checks para metadados acho que número de bases é um indicador ruim, pq como as coisas são bem generalizaveis a gente consegue ver para todas bases de uma vez só.

Entendo que a construção de um painel que traga a qualidade dos metadados também é muito relevante, só que é uma outra tarefa. Sugiro que nesse momento eu foque em achar uma maneira de acompanhar o número de bases que passaram por quality checks na parte de dados e pegar a tarefa de montar o painel de qualidade dos metadados assim que terminar de compilar os demais indicadores da equipe dados desse semestre.

Se vc concordar com isso nesse primeiro momento eu só faria o ponto "Rodar os testes DBT e guardar em quality_checks os resultados."

Se der tempo desenvolvo esse processo como uma pipeline, mas tem alguns pontos que me fazem pensar que não é algo ideal:

  1. Não vejo a necessidade da construção dessa pipeline para o objetivo dessa issue. Mas podemos avaliar depois de conseguir o objetivo 1 que é ter um painel com os indicadores de dados

  2. Fluxo alternativo

O create_yaml.py é um script que a gente fez para montar o arquivo schema.yaml e .sql a partir da arquitetura. Para facilitar a vida de todo mundo o script também já inclui 3 testes a partir das informações da arquitetura: não nulidade de nenhuma coluna, chaves únicas e conexão com diretórios.

A proposta seria colocar todos esses testes no description, pq o objetivo final dessa issue seria ter documentado os testes que cada base passou antes do final de janeiro e essa é a maneira que consigo visualizar como viável e adequada.

Separar cada teste DBT:

Proposta Minha proposta seria a gente focar no objetivo de ter documentado os testes que cada base passou antes do final de janeiro, separar um tempo determinado pra eu gastar nessa tarefa, tipo 2 semanas e ir mais o longe que der nesse tempo. Se der tempo de separar os testes e fazer uma pipeline ótimo! Se não, a gente coloca como backlog e reavalia no final do mês.

rdahis commented 8 months ago

Legal. Sempre bom dividir melhor os passos!

Mais alguns pontos:

O que acha? Fazendo assim dá tranquilo para documentar todas as tabelas que passaram por testes de qualidade.

rdahis commented 8 months ago

Criei um quality_check como exemplo. Vê no GraphQL:

query getQualityChecks {
  allQualitycheck {
    edges {
      node {
        name
        description
        createdAt
        table {
          slug
          dataset {
            slug
          }
        }
      }
    }
  }
}
laura-l-amaral commented 8 months ago

Faz sentido!

laura-l-amaral commented 7 months ago

Então @rdahis atualizações aqui!

Chamei o @arthurfg pra me ajudar nessa parte de quality checks e ele encontrou um pacote excelente para o que a gente quer fazer.

O pacote se chama elementary e é capaz de gerar reports automátizados e bem completos com os resultados de todos os testes que foram rodados no dbt. Ele organiza os artifacts, que é basicamente o registro de tudo que acontece no DBT, em um conjunto no BigQuery e a partir disso gera um relatório em formato html. o art até fez um gif para vc conseguir ver como que fica o resultado: elementary

Acredito que o ideal seria a gente ter acesso a esse html para monitorar a qualidade dos dados em produção o fluxo seria bem simples, mas basicamente:

o próximo passo seria descobrir o caminho para exportar esse relatório (a principio nao parece ser dificil e o @vncsna tem ajudado a gente com as coisas mais complicadas)

Num próximo momento podemos pegar as informações que estão no BQ nesse conjunto elementary para montar os metadados do django e pensarmos em como colocar isso no front end para nossos usuários.

O que acha?

laura-l-amaral commented 7 months ago

Aa adendo importante, vamos acompanhar o crescimento de custos no BQ para avaliar se rodar os testes toda atualização em prod está sendo muito caro ou não

rdahis commented 6 months ago

Para registrar, conversamos no Discord e dei o ok para implementarmos esse caminho e testar como fica.