Visão geral da qualidade de dados automática

Este documento descreve a qualidade automática dos dados do Dataplex, que permite definir e medir a qualidade deles. É possível automatizar a verificação de dados, validar dados em relação às regras definidas e registrar alertas se os dados não atenderem aos requisitos de qualidade. É possível gerenciar implantações e regras de qualidade de dados como código, melhorando a integridade dos pipelines de produção de dados.

Para começar, use as recomendações de regra de criação de perfil de dados do Dataplex ou crie regras personalizadas no console do Google Cloud. O Dataplex oferece monitoramento, solução de problemas e alertas do Cloud Logging integrados à qualidade automática de dados do Dataplex.

Modelo conceitual

Uma verificação de qualidade de dados aplica regras de qualidade aos dados da tabela para gerar relatórios dos resultados.

Uma verificação de dados é um job do Dataplex que faz amostras de dados do BigQuery e do Cloud Storage e infere vários tipos de metadados. Para medir a qualidade de uma tabela usando a qualidade de dados automática, crie um objeto DataScan do tipo data quality. A verificação é executada em apenas uma tabela do BigQuery. A verificação usa recursos em um projeto de locatário do Google para que você não precise configurar sua própria infraestrutura.

A criação e o uso de uma verificação de qualidade de dados consistem nas seguintes etapas:

  1. Definição da regra
  2. Execução de regras
  3. Monitoramento e alertas
  4. Solução de problemas

Definição da regra

As regras de qualidade associadas a uma verificação de qualidade de dados definem as expectativas de dados. É possível criar regras de qualidade de dados das seguintes maneiras:

Regras predefinidas

O Dataplex é compatível com duas categorias de regras predefinidas: no nível da linha ou agregadas.

Nível da linha

Para regras de categoria em nível de linha, a expectativa é aplicada a cada linha de dados. Cada linha passa ou falha a condição independentemente. Por exemplo, column_A_value < 1

As verificações no nível da linha exigem que você especifique um limite de aprovação. Quando a porcentagem de linhas que passam a regra fica abaixo do valor limite, a regra falha.

Agregar

Para regras agregadas, a expectativa é aplicada a um único valor agregado em todos os dados. Por exemplo, Avg(someCol) >= 10. Para ser aprovada, a verificação precisa ser avaliada como o booleano true. As regras agregadas não fornecem uma contagem independente de aprovações ou falhas para cada linha.

Para ambas as categorias de regras, é possível definir os seguintes parâmetros:

  • A coluna à qual a regra se aplica.
  • Uma dimensão de um conjunto de dimensões predefinidas.

A tabela a seguir lista os tipos de regra agregada e de linha compatíveis:

Tipo de regra
(nome no console do Google Cloud)
Regra no nível da linha ou agregada Descrição Tipos de colunas compatíveis Parâmetros específicos de regras
RangeExpectation
(Verificação de intervalo)
Nível da linha Verifique se o valor está entre mínimo e máximo. Todas as colunas numéricas, de data e de tipo de carimbo de data/hora. Obrigatório:
  • Porcentagem do limite de aprovação
  • Valores mean, min ou max: especifique pelo menos um valor.
Opcional:
  • Ativar strict min: se ativada, a verificação de regras usará ">" em vez de ">=".
  • Ativar strict max: se ativado, a verificação de regras usará "<" em vez de "<=".
  • Ativar ignore null: se ativado, os valores nulos serão ignorados na verificação de regras.
NonNullExpectation
(Verificação de nulo)
Nível da linha Valide se os valores da coluna não são NULL. Todos os tipos de coluna compatíveis. Obrigatório:
  • Porcentagem do limite de aprovação.
SetExpectation
(Verificar)
Nível da linha Verifica se os valores em uma coluna são um dos valores especificados em um conjunto. Todos os tipos de coluna compatíveis, exceto Record e Struct. Obrigatório:
  • Conjunto de valores de string para verificação.
  • Porcentagem do limite de aprovação.
Opcional:
  • Ativar ignore null: se ativado, os valores nulos serão ignorados na verificação de regras.
RegexExpectation
(Verificação de expressão regular)
Nível da linha Compare os valores com uma expressão regular especificada. String Obrigatório:
  • Padrão de expressão regular usado para verificação.
  • Porcentagem do limite de aprovação.
  • Observação: o SQL padrão do Google oferece suporte a expressões regulares usando a biblioteca re2. Consulte a sintaxe da expressão regular na documentação correspondente.
Opcional:
  • Ativar ignore null: se ativado, os valores nulos serão ignorados na verificação de regras.
Uniqueness
(Verificação de exclusividade)
Agregar Verificar se todos os valores em uma coluna são exclusivos. Todos os tipos de coluna compatíveis, exceto Record e Struct. Obrigatório:
  • Coluna e dimensão dos parâmetros compatíveis.
Opcional:
  • Ativar ignore null: se ativado, os valores nulos serão ignorados na verificação de regras.
StatisticRangeExpectation
(Verificação estatística)
Agregar Verifique se a medida estatística fornecida corresponde à expectativa do intervalo. Todos os tipos de coluna numérica compatíveis. Obrigatório:
  • Valores mean, min ou max: especifique pelo menos um valor.
Opcional:
  • Ativar strict min: se ativada, a verificação de regras usará ">" em vez de ">=".
  • Ativar strict max: se ativado, a verificação de regras usará "<" em vez de "<=".

Tipos de regras SQL personalizadas com suporte

As regras SQL oferecem flexibilidade para expandir a validação com lógica personalizada. Essas regras vêm nos tipos abaixo.

Tipo de regra Regra no nível da linha ou agregada Descrição Tipos de colunas compatíveis Parâmetros específicos de regras Exemplo
Condição da linha Nível da linha

Especifique uma expectativa para cada linha definindo uma expressão SQL em uma cláusula WHERE. A expressão SQL precisa ser avaliada como true (aprovado) ou false (reprovado) por linha. O Dataplex calcula a porcentagem de linhas que atendem a essa expectativa e compara esse valor com a porcentagem do limite de aprovação para determinar o sucesso ou a falha da regra.

A expressão pode incluir uma referência a outra tabela, por exemplo, para criar verificações de integridade referenciais.

Todas as colunas Obrigatório:
  • Condição do SQL a ser usada
  • Porcentagem do limite de aprovação
  • Dimensão
Opcional:
  • Coluna à qual esta regra será associada.
grossWeight <= netWeight
Expressão SQL agregada Agregar

Essas regras são executadas uma vez por tabela. Forneça uma expressão SQL avaliada como booleana true (aprovada) ou false (reprovada).

A expressão SQL pode incluir uma referência a outra tabela usando subconsultas de expressão.

Todas as colunas Obrigatório:
  • Condição do SQL a ser usada
  • Dimensão
Opcional:
  • Coluna à qual esta regra será associada

Exemplo de agregação simples:
avg(price) > 100

Uso de uma subconsulta de expressão para comparar valores em uma tabela diferente:
(SELECT COUNT(*) FROM `example_project.example_dataset.different-table`) < COUNT(*)

Declaração SQL Agregar

Uma regra de declaração usa uma consulta de qualidade de dados para encontrar linhas que falham em uma ou mais condições especificadas na consulta. Forneça uma instrução SQL que seja avaliada para retornar linhas que correspondam ao estado inválido. Se a consulta retornar alguma linha, a regra falhará.

Omita o ponto e vírgula à direita da instrução SQL.

A instrução SQL pode incluir uma referência a outra tabela usando subconsultas de expressão.

Todas as colunas Obrigatório:
  • Instrução SQL para verificar o estado inválido
  • Dimensão
Opcional:
  • Coluna à qual esta regra será associada.

Exemplo de agregação simples para garantir que discount_pct não seja maior que 100:
SELECT * FROM example_project.example_dataset.table WHERE discount_pct > 100

Uso de uma subconsulta de expressão para comparar valores em uma tabela diferente:
SELECT * FROM `example_project.example_dataset.different-table` WHERE gross_weight > (SELECT avg(gross_weight) FROM `example_project.example_dataset.different-table`)

Para conferir exemplos de regras, consulte as regras de amostra de qualidade de dados automática.

Para funções SQL compatíveis, consulte a Referência do GoogleSQL.

Dimensões

As dimensões permitem agregar os resultados de várias regras de qualidade de dados para monitoramento e alerta. Você precisa associar cada regra de qualidade de dados a uma dimensão. O Dataplex é compatível com as seguintes dimensões:

  • Atualização
  • Volume
  • Integridade
  • Validade
  • Consistência
  • Precisão
  • Exclusividade

Entrada digitada nas regras

Todos os parâmetros de valor são transmitidos como valores de string para a API. O Dataplex requer entradas que sigam o formato especificado do BigQuery.

Parâmetros binários podem ser passados como uma string codificada em base64.

Tipo Formatos compatíveis Examples
Binário Valor codificado em Base64 YXBwbGU=
Carimbo de data/hora AAAA-[M]M-[D]D[( |T)[H]H:[M]M:[S]S[.F]] [time_zone]
OU AAAA-[M]M-[D]D[( |T)[H]H:[M]M:[S]S[.F]][time_zone_offset]
27-09-2014 12:30:00.45-08
Data AAAA-M[M]-D[D] 2014-09-27
Hora [H]H:[M]M:[S]S[.DDDDDD] 12:30:00.45
DateTime AAAA-[M]M-[D]D [[H]H:[M]M:[S]S[.DDDDDD]] 2014-09-27 12:30:00.45

Parâmetro de referência de dados

Ao criar uma regra SQL personalizada, é possível referenciar uma tabela de fonte de dados e todos os filtros de condição prévia usando o parâmetro de referência de dados ${data()} na regra, em vez de mencionar explicitamente a tabela de origem e os filtros dela. Exemplos de filtros de condição prévia incluem filtros de linha, porcentagens de amostragem e filtros incrementais. O parâmetro ${data()} diferencia maiúsculas de minúsculas.

Por exemplo, digamos que você tenha uma tabela de fonte de dados chamada my_project_id.dim_dataset.dim_currency. Você quer executar uma verificação incremental de qualidade de dados que verifica apenas dados diários novos. Um filtro de linha que filtra as entradas de hoje, transaction_timestamp >= current_date(), é aplicado à tabela.

Uma regra SQL personalizada para encontrar linhas com discount_pct para hoje tem esta aparência:

discount_pct IN (SELECT discount_pct FROM my_project_id.dim_dataset.dim_currency WHERE transaction_timestamp >= current_date())

Se você usar o parâmetro de referência de dados, poderá simplificar a regra:

discount_pct IN (SELECT discount_pct FROM ${data()})

O parâmetro ${data()} neste exemplo se refere à tabela de fonte de dados com as entradas de hoje, my_project_id.dim_dataset.dim_currency WHERE transaction_timestamp >= current_date(). Neste exemplo, o parâmetro de referência de dados se refere apenas aos dados incrementais.

Ao usar um alias em uma subconsulta para se referir a colunas na tabela de origem, use o parâmetro de referência de dados para se referir à tabela de origem ou omita a referência de tabela. Não se refira às colunas na tabela de origem usando uma referência de tabela direta na cláusula WHERE.

Recomendação:

  • Use o parâmetro de referência de dados:

    discount_pct IN (
    SELECT discount_pct FROM
    `my_project_id.dim_dataset.dim_currency` AS temp-table
    WHERE
    temp-table.transaction_timestamp = ${data()}.timestamp
    )
    
  • Omita a referência da tabela:

    discount_pct IN (
    SELECT discount_pct FROM
    `my_project_id.dim_dataset.dim_currency` AS temp-table
    WHERE
    temp-table.transaction_timestamp = timestamp
    )
    

Não recomendado:

  • Não use uma referência direta de tabela:

    discount_pct IN (
    SELECT discount_pct FROM
    `my_project_id.dim_dataset.dim_currency` AS temp-table
    WHERE
    temp-table.transaction_timestamp = `my_project_id.dim_dataset.dim_currency`.timestamp
    )
    

Execução de regras

É possível programar verificações de qualidade de dados para serem executadas em um intervalo específico ou realizar uma verificação sob demanda. Para gerenciar as verificações de qualidade de dados, use a API ou o Console do Google Cloud.

Quando você executa uma verificação de qualidade de dados, o Dataplex cria um job. Como parte da especificação de uma verificação de qualidade de dados, é possível definir o escopo de um job como um dos seguintes:

Tabela completa
Cada job valida a tabela inteira.
Incremental
Cada job valida dados incrementais. Para determinar incrementos, forneça uma coluna Date / Timestamp na tabela que possa ser usada como marcador. Normalmente, é nessa coluna que a tabela está particionada.

Filtrar dados

O Dataplex pode filtrar os dados que precisam ser verificados quanto à qualidade usando um filtro de linha. Criar um filtro de linha permite se concentrar nos dados de um período ou segmento específico, como uma determinada região. O uso de filtros pode reduzir o tempo e o custo de execução, por exemplo, filtrando dados com um carimbo de data/hora antes de uma determinada data.

Dados de amostra

Com o Dataplex, é possível especificar uma porcentagem de registros dos seus dados para amostragem para executar uma verificação de qualidade de dados. A criação de verificações de qualidade de dados em uma amostra menor pode reduzir o tempo de execução e o custo da consulta de todo o conjunto de dados.

Monitoramento e alertas

É possível exportar os resultados da verificação para uma tabela do BigQuery se quiser uma análise mais detalhada. Para personalizar relatórios, conecte os dados da tabela do BigQuery a um painel do Looker. É possível criar um relatório agregado usando a mesma tabela de resultados em várias verificações.

É possível monitorar os jobs de qualidade de dados usando os registros data_scan e data_quality_scan_rule_result na Análise de registros.

Para cada job de qualidade de dados, o registro data_scan com o campo data_scan_type definido como DATA_QUALITY contém as seguintes informações:

  • Fonte de dados usada para a verificação de dados.
  • detalhes da execução do job, como horário de criação, horário de início, horário de término e estado do job.
  • Resultado do job de qualidade de dados: aprovado ou reprovado.
  • O usuário foi aprovado ou reprovado no nível da dimensão.

Todo job bem-sucedido contém um registro data_quality_scan_rule_result com as seguintes informações detalhadas sobre cada regra nesse job:

  • Informações de configuração, como nome, tipo de regra, tipo de avaliação e dimensão.
  • Informações do resultado, como aprovação ou falha, contagem total de linhas, contagem de linhas passadas, contagem de linhas nulas e contagem de linhas avaliadas.

As informações nos registros estão disponíveis por meio da API e do console do Google Cloud. Use essas informações para configurar alertas. Para mais informações, consulte Definir alertas no Cloud Logging.

Resolver falhas

Quando uma regra falha, o Dataplex produz uma consulta que retorna todas as colunas da tabela, e não apenas a coluna com falha.

Limitações

  • Os resultados da verificação de qualidade de dados não são publicados no Data Catalog como tags.
  • As recomendações de regras só têm suporte no console do Google Cloud.
  • A escolha de dimensões é fixada em uma das sete dimensões predefinidas.
  • O número de regras por verificação de qualidade de dados é limitado a 1.000.

Preços

  • O Dataplex usa a SKU de processamento premium para cobrar pela qualidade automática de dados. Para mais informações, consulte Preços do Dataplex.

  • A publicação de resultados automáticos de qualidade de dados no catálogo ainda não está disponível. Quando estiver disponível, será cobrada a mesma taxa dos preços de armazenamento de metadados do catálogo. Para mais detalhes, consulte os preços.

  • O processamento premium do Dataplex para qualidade de dados automática é cobrado por segundo, com um mínimo de um minuto.

  • Não há cobranças por verificações de qualidade de dados com falha.

  • A cobrança depende do número de linhas, de colunas, da quantidade de dados verificados, da configuração da regra de qualidade de dados, das configurações de particionamento e clustering na tabela e da frequência da gscan.

  • Existem várias opções para reduzir o custo das verificações automáticas de qualidade de dados:

  • Separe as cobranças de qualidade de dados de outras cobranças na SKU de processamento premium do Dataplex, use o rótulo goog-dataplex-workload-type com o valor DATA_QUALITY.

  • Filtrar cobranças agregadas. Use os seguintes rótulos:

    • goog-dataplex-datascan-data-source-dataplex-entity
    • goog-dataplex-datascan-data-source-dataplex-lake
    • goog-dataplex-datascan-data-source-dataplex-zone
    • goog-dataplex-datascan-data-source-project
    • goog-dataplex-datascan-data-source-region
    • goog-dataplex-datascan-id
    • goog-dataplex-datascan-job-id

A seguir