Garantindo a qualidade dos dados por meio de contratos de dados

Um contrato de dados é um acordo formal entre um produtor e um consumidor de dados e define, entre outras coisas, a estrutura, o esquema e a qualidade esperados dos dados. Isso garante que os dados atendam aos requisitos e estejam em conformidade com as definições da empresa.

Os contratos de dados para uso em IBM watsonx.data intelligence devem ser configurados no formato YAML ou JSON e estar em conformidade com o Padrão de Contrato de Dados Abertos (ODCS).

Visualização de tecnologia Esta é uma visualização de tecnologia ainda não suportada para uso em ambientes de produção.

Plataformas em nuvem
Permissões necessárias
Você deve ter a função de Administrador ou Editor no projeto e as permissões de usuário “Gerenciar ativos de qualidade de dados” e “Executar regras de qualidade de dados ”.

Os contratos de dados podem ser totalmente gerenciados e aplicados por meio da interface do usuário do Data Product Hub. No entanto, você também pode gerenciar e controlar as versões dos arquivos de contrato nos formatos YAML ou JSON em um sistema externo de controle de versão, como o Git, e, em seguida, executar validações de qualidade de dados diretamente por meio da API de aplicação de contratos de dados.

Ao criar um contrato no formato YAML ou JSON, certifique-se de incluir as seguintes propriedades, além daquelas exigidas pelo ODCS:

  • Defina um nome para o contrato de dados com a name propriedade.
  • Inclua uma servers seção e defina a schema propriedade para cada servidor que você definir.
  • Inclua uma schema seção e defina a physicalName propriedade para cada objeto de esquema que você definir.
  • Para cada objeto de qualidade, forneça um nome por meio da name propriedade.

A API de aplicação de contratos de dados oferece métodos que você pode usar para estas tarefas:

  1. Carregue um novo contrato de dados ou atualize um já existente.
  2. Execute testes de validação da qualidade dos dados com base nesse contrato.
  3. Recuperar os resultados do teste.

As chamadas de API exigem um ou mais destes parâmetros:

project_id
O ID do projeto que você deseja usar como área de trabalho para suas validações.
data_contract_id
O ID do contrato de dados em relação ao qual você deseja validar seus dados. Você pode obter o ID do id campo na resposta ao criar um contrato de dados. Como alternativa, você pode enviar uma GET /data_quality/v4/projects/{project_id}/data_contracts chamada para listar todos os contratos de dados dentro de um projeto.

Os seguintes tipos de verificações de qualidade de dados são validados para contratos de dados:

  • Regras no formato SQL
  • Estas métricas da biblioteca no nível da coluna:
    • Valores nulos
    • Valores omissos
    • Valores inválidos
    • Valores Duplicados
  • Estas métricas da biblioteca no nível do esquema:
    • Contagem de linhas
    • Valores Duplicados

Para cada verificação, você pode fornecer informações de agendamento no contrato de dados usando uma expressão cron. No entanto, o teste é executado apenas uma vez em IBMwatsonx.data intelligence, mesmo que a expressão cron no contrato de dados defina execuções recorrentes.

Para obter mais informações sobre essas verificações de qualidade dos dados e sobre como configurar a programação, consulte o Padrão de Contrato de Dados Abertos: Qualidade dos Dados.

Aplicar um novo contrato de dados

Você deseja aplicar um contrato de dados que ainda não existe no projeto:

  1. Crie o contrato no formato YAML ou JSON, por exemplo, em Git.

  2. Opcional: Verifique se o contrato está em conformidade com a sintaxe definida na norma ODCS antes de criá-lo no projeto:

    POST /data_quality/v4/projects/{project_id}/data_contracts_validation
    
  3. Crie o contrato no projeto:

    POST /data_quality/v4/projects/{project_id}/data_contracts
    
  4. Execute o teste:

    POST /data_quality/v4/projects/{project_id}/data_contracts/{data_contract_id}/test
    

    Os ativos de dados e as regras SQL definidas no contrato de dados são criados no projeto, e as regras são executadas, seja diretamente ou de forma programada. Mesmo que seja definida uma programação recorrente, o teste é executado apenas uma vez.

    Se você quiser remover as regras de qualidade de dados do projeto após a conclusão do teste, defina o retain_dq_objects parâmetro da chamada como false.

  5. Recuperar os resultados do teste:

    GET /data_quality/v4/projects/{project_id}/data_contracts/{data_contract_id}/test_results
    
  6. Analise os resultados para determinar se os dados atenderam aos padrões de qualidade definidos.

Aplicar um contrato de dados atualizado

Você atualizou o contrato de dados e precisa testar novamente seus dados. Por exemplo, os dados sujeitos ao contrato de dados ou os requisitos de qualidade dos dados foram alterados.

  1. Atualize o contrato no repositório de código-fonte, por exemplo, em Git.

  2. Atualize o contrato no projeto:

    PUT /data_quality/v4/projects/{project_id}/data_contracts/{data_contract_id}
    
  3. Execute o teste:

    POST /data_quality/v4/projects/{project_id}/data_contracts/{data_contract_id}/test
    

    Dependendo das alterações no contrato de dados, os ativos de dados e as regras SQL são atualizados ou adicionados, e as regras são executadas, seja diretamente ou de forma programada. Mesmo que seja definida uma programação recorrente, o teste é executado apenas uma vez.

  4. Recuperar os resultados do teste:

    GET /data_quality/v4/projects/{project_id}/data_contracts/{data_contract_id}/test_results
    
  5. Analise os resultados para determinar se os dados atenderam aos padrões de qualidade definidos.

Encontrar um contrato de dados específico e testá-lo ou retestá-lo conforme necessário

Você deseja verificar se existe um contrato específico no seu projeto e se ele foi executado, a fim de decidir se deve repetir os testes de qualidade dos dados ou até mesmo criar um novo contrato.

  1. Identifique o contrato que você deseja procurar no repositório de origem. Anote o nome, o ID ou quaisquer metadados que possam ser comparados com o conteúdo do projeto.

  2. Liste os contratos de dados existentes no projeto:

    GET /data_quality/v4/projects/{project_id}/data_contracts
    
  3. Se o contrato que você está procurando existir no projeto, verifique se há resultados disponíveis:

    GET /data_quality/v4/projects/{project_id}/data_contracts/{data_contract_id}/test_results
    
    1. Se os resultados estiverem disponíveis e ainda forem válidos, não é necessário tomar nenhuma outra medida.

    2. Se não houver resultados disponíveis ou se os resultados existentes estiverem desatualizados, por exemplo, porque se referem a um contrato ou dados mais antigos, execute o teste:

      POST /data_quality/v4/projects/{project_id}/data_contracts/{data_contract_id}/test
      
    3. Recuperar os resultados:

    GET /data_quality/v4/projects/{project_id}/data_contracts/{data_contract_id}/test_results
    
  4. Se o contrato que você está procurando não existir no projeto, siga as etapas descritas em Como aplicar um novo contrato de dados.

Exclusão de contratos, regras ou resultados

Você pode excluir contratos de dados e quaisquer resultados de testes de um projeto:

  • Excluir um ou mais contratos:

    DELETE /data_quality/v4/projects/{project_id}/data_contracts
    

    Forneça os IDs dos contratos em uma lista separada por vírgulas.

  • Excluir os resultados dos testes de um contrato específico:

    DELETE /data_quality/v4/projects/{project_id}/data_contracts/{data_contract_id}/test_results