Teste a qualidade de dados

Este documento mostra como usar o Dataform core para criar afirmações de tabelas do Dataform e testar o código do fluxo de trabalho.

Acerca das afirmações

Uma asserção é uma consulta de teste de qualidade de dados que encontra linhas que violam uma ou mais condições especificadas na consulta. Se a consulta devolver linhas, a asserção falha. O Dataform executa asserções sempre que atualiza o fluxo de trabalho e envia-lhe um alerta se alguma asserção falhar.

O Dataform cria automaticamente visualizações no BigQuery que contêm os resultados das consultas de validação compiladas. Conforme configurado no ficheiro de definições do fluxo de trabalho, o Dataform cria estas vistas num esquema de validações onde pode inspecionar os resultados das validações.

Por exemplo, para o esquema dataform_assertions predefinido, o Dataform cria uma vista no BigQuery no seguinte formato: dataform_assertions.assertion_name.

Pode criar afirmações para todos os tipos de tabelas do Dataform: tabelas, tabelas incrementais, vistas e vistas materializadas.

Pode criar afirmações das seguintes formas:

Antes de começar

  1. Na Google Cloud consola, aceda à página Dataform.

    Aceda à página do formulário de dados

  2. Selecione ou crie um repositório.

  3. Selecione ou crie um espaço de trabalho de desenvolvimento.

  4. Crie uma tabela.

Funções necessárias

Para receber as autorizações de que precisa para criar afirmações, peça ao seu administrador que lhe conceda a função de IAM Editor do Dataform (roles/dataform.editor) nos espaços de trabalho. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Crie afirmações incorporadas

Pode adicionar afirmações do Dataform incorporadas ao bloco config de uma tabela. O Dataform executa estas afirmações após a criação da tabela. Depois de o Dataform criar a tabela, pode ver se a declaração foi aprovada no separador Registos de execução do fluxo de trabalho do seu espaço de trabalho.

Pode criar as seguintes afirmações no bloco config de uma tabela:

  • nonNull

    Esta condição afirma que as colunas especificadas não são nulas em todas as linhas da tabela. Esta condição é usada para colunas que nunca podem ser nulas.

    O exemplo de código seguinte mostra uma declaração nonNull no bloco config de uma tabela:

config {
  type: "table",
  assertions: {
    nonNull: ["user_id", "customer_id", "email"]
  }
}
SELECT ...
  • rowConditions

    Esta condição afirma que todas as linhas da tabela seguem a lógica personalizada que define. Cada condição de linha é uma expressão SQL personalizada e cada linha da tabela é avaliada em função de cada condição de linha. A asserção falha se qualquer linha da tabela resultar em false.

    O exemplo de código seguinte mostra uma declaração rowConditions personalizada no bloco config de uma tabela incremental:

config {
  type: "incremental",
  assertions: {
    rowConditions: [
      'signup_date is null or signup_date > "2022-08-01"',
      'email like "%@%.%"'
    ]
  }
}
SELECT ...
  • uniqueKey

    Esta condição afirma que, numa coluna especificada, nenhuma linha da tabela tem o mesmo valor.

    O seguinte exemplo de código mostra uma asserção uniqueKey no bloco config de uma vista:

config {
  type: "view",
  assertions: {
    uniqueKey: ["user_id"]
  }
}
SELECT ...
  • uniqueKeys

    Esta condição afirma que, nas colunas especificadas, nenhuma linha da tabela tem o mesmo valor. A asserção falha se existir mais do que uma linha na tabela com os mesmos valores para todas as colunas especificadas.

    O seguinte exemplo de código mostra uma uniqueKeysasserção no bloco config de uma tabela:

config {
  type: "table",
  assertions: {
    uniqueKeys: [["user_id"], ["signup_date", "customer_id"]]
  }
}
SELECT ...

Adicione afirmações ao bloco config

Para adicionar afirmações ao bloco de configuração de uma tabela, siga estes passos:

  1. No espaço de trabalho de desenvolvimento, no painel Ficheiros, selecione um ficheiro SQLX de definição de tabela.
  2. No bloco config do ficheiro de tabela, introduza assertions: {}.
  3. Em assertions: {}, adicione as suas afirmações.
  4. Opcional: clique em Formatar.

O seguinte exemplo de código mostra as condições adicionadas no bloco config:

config {
  type: "table",
  assertions: {
    uniqueKey: ["user_id"],
    nonNull: ["user_id", "customer_id"],
    rowConditions: [
      'signup_date is null or signup_date > "2019-01-01"',
      'email like "%@%.%"'
    ]
  }
}
SELECT ...

Crie afirmações manuais com SQLX

As afirmações manuais são consultas SQL que escreve num ficheiro SQLX dedicado. Uma consulta SQL de afirmação manual tem de devolver zero linhas. Se a consulta devolver linhas quando é executada, a asserção falha.

Para adicionar afirmações manuais num novo ficheiro SQLX, siga estes passos:

  1. No painel Ficheiros, junto a definitions/, clique no menu Mais.
  2. Clique em Criar ficheiro.
  3. No campo Adicionar um caminho do ficheiro, introduza o nome do ficheiro seguido de .sqlx. Por exemplo, definitions/custom_assertion.sqlx.

    Os nomes de ficheiros só podem incluir números, letras, hífenes e sublinhados.

  4. Clique em Criar ficheiro.

  5. No painel Ficheiros, clique no novo ficheiro.

  6. No ficheiro, introduza:

    config {
      type: "assertion"
    }
    
  7. Abaixo do bloco config, escreva a sua consulta SQL ou várias consultas.

  8. Opcional: clique em Formatar.

O seguinte exemplo de código mostra uma declaração manual num ficheiro SQLX que declara que os campos A, B e c nunca são NULL em sometable:

config { type: "assertion" }

SELECT
  *
FROM
  ${ref("sometable")}
WHERE
  a IS NULL
  OR b IS NULL
  OR c IS NULL

O que se segue?