Visão geral da qualidade de dados automática

Com a qualidade de dados automática do Catálogo Universal do Dataplex, é possível definir e medir a qualidade dos dados nas tabelas do BigQuery. É possível automatizar a verificação de dados, validar os dados em relação a regras definidas e registrar alertas se eles não atenderem aos requisitos de qualidade. É possível gerenciar regras e implantações 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 regras de criação de perfil de dados do Dataplex Universal Catalog ou crie regras personalizadas no console Google Cloud . O Dataplex Universal Catalog oferece monitoramento, solução de problemas e alertas do Cloud Logging integrados à qualidade de dados automática do Dataplex Universal Catalog.

Modelo conceitual

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

Uma verificação de dados é um job do Dataplex Universal Catalog que coleta 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, então você não precisa configurar sua própria infraestrutura.

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

  1. Definir regras de qualidade de dados
  2. Configurar a execução de regras
  3. Analisar resultados da verificação de qualidade de dados
  4. Configurar o monitoramento e os alertas
  5. Resolver problemas de falhas na qualidade de dados

Definição da regra

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

Regras predefinidas

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

No nível da linha

Para regras de categoria no nível da linha, a expectativa é aplicada a cada linha de dados. Cada linha passa ou falha na condição de forma independente. 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 na 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 de agregação não fornecem uma contagem independente de aprovação ou reprovação para cada linha.

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

  • A coluna a que a regra se aplica
  • Uma dimensão

A tabela a seguir lista os tipos de regras agregadas e no nível da linha compatíveis:

Tipo de regra
(nome no console do Google Cloud )
Regra no nível da linha ou agregada Descrição Tipos de coluna compatíveis Parâmetros específicos da regra
RangeExpectation
(Verificação de intervalo)
No nível da linha Verifique se o valor está entre o mínimo e o máximo. Todas as colunas numéricas, de data e de carimbo de data/hora. Obrigatório:
  • Porcentagem mínima de aprovação
  • Valores min ou max: especifique pelo menos um valor.
Opcional:
  • Ativar strict min: se ativada, a verificação de regra usa ">" em vez de ">=".
  • Ativar strict max: se ativada, a verificação de regra usa "<" em vez de "<=".
  • Ativar ignore null: se ativado, os valores nulos serão ignorados na verificação da regra.
NonNullExpectation
(Verificação de valores nulos)
No 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 mínima de acertos para aprovação.
SetExpectation
(Definir verificação)
No 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 a serem verificados.
  • Porcentagem mínima de acertos para aprovação.
Opcional:
  • Ativar ignore null: se ativado, os valores nulos serão ignorados na verificação da regra.
RegexExpectation
(Verificação de expressão regular)
No nível da linha Verifique os valores em relação a uma expressão regular especificada. String Obrigatório:
  • Padrão de expressão regular usado para verificação.
  • Porcentagem mínima de acertos para aprovação.
  • Observação: o GoogleSQL 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 da regra.
Uniqueness
(Verificação de exclusividade)
Agregar Verifica 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 da regra.
StatisticRangeExpectation
(Verificação de estatísticas)
Agregar Verifique se a medida estatística fornecida corresponde à expectativa de intervalo. Todos os tipos de colunas numéricas aceitos. Obrigatório:
  • Valores mean, min ou max: especifique pelo menos um valor.
Opcional:
  • Ativar strict min: se ativada, a verificação de regra usa ">" em vez de ">=".
  • Ativar strict max: se ativada, a verificação de regra usa "<" em vez de "<=".

Tipos de regras SQL personalizadas compatíveis

As regras de SQL oferecem flexibilidade para expandir a validação com lógica personalizada. Essas regras são dos seguintes tipos.

Tipo de regra Regra no nível da linha ou agregada Descrição Tipos de coluna compatíveis Parâmetros específicos da regra Exemplo
Condição da linha No 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 (aprovação) ou false (reprovação) por linha. O catálogo universal do Dataplex calcula a porcentagem de linhas que atendem a essa expectativa e compara esse valor com a porcentagem de 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 referencial.

Todas as colunas Obrigatório:
  • Condição SQL a ser usada
  • Porcentagem mínima de aprovação
  • Dimensão
Opcional:
  • Coluna a ser associada a esta regra.
grossWeight <= netWeight
Condição de tabela
(expressão SQL de agregação)
Agregar

Essas regras são executadas uma vez por tabela. Use uma expressão SQL que seja avaliada como booleana true (aprovação) ou false (reprovação).

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

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

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

Usar 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 não atendem a uma ou mais condições especificadas na consulta. Informe uma instrução SQL que seja avaliada para retornar as linhas que correspondem ao estado inválido. Se a consulta retornar linhas, a regra vai falhar.

Omita o ponto e vírgula final 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 a ser associada a esta regra.

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

Usar 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 exemplos de regras, consulte regras de exemplo de qualidade de dados automática.

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

Dimensões

Com as dimensões, é possível agregar os resultados de várias regras de qualidade de dados para monitoramento e alertas. É necessário associar cada regra de qualidade de dados a uma dimensão. O Dataplex Universal Catalog oferece as seguintes dimensões:

Atualização
A atualização mede quando os dados foram atualizados pela última vez. Com essas informações, você pode determinar se os dados são recentes o suficiente para serem úteis.
Volume
O volume mede se todos os dados esperados estão presentes.
Integridade
A integridade avalia se os dados contêm todas as informações necessárias para a finalidade pretendida.
Validade
A validade avalia se os dados estão em conformidade com os padrões predefinidos de formato, intervalos aceitáveis ou outros critérios. Por exemplo, se uma data válida precisar ter o formato YYYY/mm/dd, então 12/08/2019 será um dado inválido. Como outro exemplo, se um preço promocional válido para um item estiver entre US $10 e US $20, um preço promocional de US $100 será um dado inválido.
Consistência
A consistência se refere a ter os mesmos valores para dados em várias instâncias, como tabelas e colunas. A inconsistência nos dados surge quando, por exemplo, a receita de um produto é diferente quando lida em um banco de dados de vendas ou de uso.
Precisão
A acurácia reflete a exatidão dos dados. Dados válidos não são necessariamente precisos. Por exemplo, uma cor de cabelo válida pode ser castanho, mas se uma pessoa não tem cabelo castanho, isso é um dado impreciso.
Exclusividade
A exclusividade mede se os dados são distintos e não têm duplicidades.

Entrada por digitação em regras

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

Parâmetros de tipo binário podem ser transmitidos como uma string codificada em base64.

Tipo Formatos compatíveis Exemplos
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]
2014-09-27 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 YYYY-[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 se referir a uma tabela de fonte de dados e a todos os filtros de pré-condição dela 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. O Dataplex Universal Catalog interpreta o parâmetro como uma referência à tabela de origem e aos filtros dela. Exemplos de filtros de pré-condição incluem filtros de linha, porcentagens de amostragem e filtros incrementais.

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 da qualidade dos dados que verifica apenas os novos dados diários. 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 é assim:

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. Substitua a menção da tabela e os filtros de pré-condição pelo parâmetro ${data()}:

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

O Dataplex Universal Catalog interpreta o parâmetro ${data()} como uma referência à tabela de origem 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.

O parâmetro ${data()} diferencia maiúsculas de minúsculas.

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 direta na cláusula WHERE.

Recomendação:

  • Use o parâmetro de referência de dados para se referir à tabela de origem:

    discount_pct IN (
    SELECT discount_pct FROM
    `my_project_id.dim_dataset.dim_currency` AS temp-table
    WHERE
    temp-table.transaction_timestamp = ${data()}.timestamp
    )
    
  • Omitir 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 para se referir a colunas na tabela de origem:

    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 executar uma verificação sob demanda. Para gerenciar verificações de qualidade de dados, use a API ou o console doGoogle Cloud .

Quando você executa uma verificação de qualidade de dados, o Catálogo Universal do Dataplex cria um job. Como parte da especificação de uma verificação de qualidade de dados, você pode 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 os incrementos, forneça uma coluna Date / Timestamp na tabela que possa ser usada como marcador. Normalmente, essa é a coluna em que a tabela é particionada.

Filtrar dados

O Dataplex Universal Catalog pode filtrar os dados a serem verificados para qualidade de dados usando um filtro de linha. Com um filtro de linha, você pode se concentrar em 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, é possível filtrar dados com um carimbo de data/hora anterior a uma determinada data.

Dados de amostra

Com o Dataplex Universal Catalog, é possível especificar uma porcentagem de registros dos seus dados para amostragem e execução de uma verificação de qualidade de dados. Criar verificações de qualidade de dados em uma amostra menor de dados pode reduzir o tempo de execução e o custo em relação à consulta do conjunto de dados inteiro.

Resultados da verificação de qualidade de dados

Os resultados das suas verificações de qualidade de dados estão disponíveis no Dataplex Universal Catalog. Você também pode analisar os resultados da verificação usando os seguintes métodos:

  • Exportar resultados para o BigQuery

    É possível exportar os resultados da verificação para uma tabela do BigQuery e fazer uma análise mais detalhada. Para personalizar os 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.

  • Publicar resultados como metadados do Dataplex Universal Catalog

    É possível publicar os resultados da verificação de qualidade de dados como metadados do Dataplex Universal Catalog. Os resultados mais recentes são salvos na entrada do Dataplex Universal Catalog que representa a tabela de origem, no tipo de aspecto do sistema data-quality-scorecard. É possível conferir os resultados nas páginas do BigQuery e do Catálogo Universal do Dataplex da tabela de origem no console Google Cloud , na guia Qualidade de dados. Também é possível recuperar os resultados usando a API.

    Para mais informações sobre os metadados do Dataplex Universal Catalog, consulte Sobre o gerenciamento do catálogo de dados no Dataplex Universal Catalog.

  • Analisar os índices de qualidade de dados

    Cada resultado de verificação fornece pontuações de qualidade de dados que indicam a porcentagem de regras aprovadas. As pontuações são informadas no nível geral do job, da coluna (se a regra for avaliada em relação a uma coluna) e da dimensão. Use as pontuações de qualidade de dados para normalizar a qualidade em tabelas ou colunas, acompanhar tendências e identificar dados que não atendem aos requisitos de qualidade.

Para mais informações, consulte Ver os resultados da verificação de qualidade de dados.

Monitoramento e alertas

É possível monitorar e receber alertas sobre verificações de qualidade de dados usando os seguintes métodos:

  • Definir alertas no Cloud Logging

    É 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, início e término, além do estado do job.
    • Resultado do job de qualidade de dados: aprovado ou reprovado.
    • Aprovação ou reprovação no nível da dimensão.

    Todo job concluído 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 e avaliação da regra e dimensão.
    • Informações sobre o resultado, como aprovação ou reprovação, contagem total de linhas, contagem de linhas aprovadas, contagem de linhas nulas e contagem de linhas avaliadas.

    As informações nos registros estão disponíveis na API e no consoleGoogle Cloud . Você pode usar essas informações para configurar alertas. Para mais informações, consulte Definir alertas no Logging.

  • Enviar relatórios de notificação por e-mail

    É possível enviar relatórios de notificação por e-mail para alertar as pessoas sobre o status e os resultados de um job de qualidade de dados. Os relatórios de notificações estão disponíveis para os seguintes cenários:

    • O índice de qualidade de dados é menor do que um índice de meta especificado
    • O job falhou
    • O trabalho foi concluído.

    Você configura relatórios de notificação ao criar uma verificação de qualidade de dados.

Resolver problemas de falhas na qualidade de dados

Quando uma regra falha, o Dataplex Universal Catalog gera uma consulta para receber os registros com falha. Execute esta consulta para conferir os registros que não corresponderam à sua regra. Para mais informações, consulte Resolver problemas de falha na qualidade dos dados.

Limitações

  • Não é possível publicar resultados de verificação de qualidade de dados como metadados do Dataplex Universal Catalog no console Google Cloud .
  • As recomendações de regras não são compatíveis com a CLI gcloud.
  • A escolha de dimensões é fixa em uma das sete dimensões predefinidas.
  • O número de regras por verificação de qualidade de dados é limitado a 1.000.
  • As pontuações de qualidade dos dados informadas no nível da coluna são compatíveis apenas na API.

Preços

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

  • O processamento premium do Dataplex Universal Catalog para qualidade de dados automática é faturado 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 e 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 verificação.

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

  • Para separar as cobranças de qualidade de dados de outras cobranças na SKU de processamento premium do Catálogo Universal do Dataplex, no relatório de faturamento do Cloud, use o rótulo goog-dataplex-workload-type com o valor DATA_QUALITY.

  • Para 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