Criar perfis e validar a qualidade dos dados

O Knowledge Catalog (antigo Dataplex Universal Catalog) permite criar perfis de tabelas do BigQuery para calcular estatísticas no nível da coluna, como porcentagens de nulos, contagens de valores exclusivos e distribuições de valores. Em seguida, use esses insights para definir regras de qualidade de dados e validar seus registros em busca de anomalias.

Neste guia de início rápido, você vai preencher uma tabela do BigQuery de amostra com anomalias intencionais, executar uma verificação do perfil de dados e avaliar os resultados com uma verificação de qualidade de dados. Para mais informações, consulte Sobre a criação de perfil de dados e Sobre a qualidade de dados automática.

Antes de começar

Configure o projeto:

  1. Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloudagora, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho sem custos financeiros.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  4. Verify that billing is enabled for your Google Cloud project.

  5. Enable the Knowledge Catalog and BigQuery APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  7. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  8. Verify that billing is enabled for your Google Cloud project.

  9. Enable the Knowledge Catalog and BigQuery APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

Funções exigidas

Para receber as permissões necessárias para criar e executar verificações de perfil e qualidade de dados e gerenciar recursos do BigQuery, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

Se você tiver as permissões necessárias para gerenciar o acesso do IAM no projeto, poderá conceder esses papéis à sua própria conta de usuário executando os seguintes comandos gcloud:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:USER_EMAIL" \
    --role="roles/dataplex.dataScanEditor"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:USER_EMAIL" \
    --role="roles/bigquery.dataOwner"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:USER_EMAIL" \
    --role="roles/bigquery.jobUser"

Substitua:

  • PROJECT_ID: o ID do projeto Google Cloud .
  • USER_EMAIL: o endereço de e-mail da sua conta de usuário (por exemplo, name@example.com).

Conceder permissões ao agente de serviço do Knowledge Catalog

Um agente de serviço é uma conta serviço gerenciado pelo Google que o Knowledge Catalog usa para executar consultas de verificação no BigQuery em seu nome.

  1. No console do Google Cloud , clique em Ativar o Cloud Shell na barra de ferramentas. O provisionamento e a conexão do ambiente podem demorar um pouco.

  2. Crie o agente de serviço do Knowledge Catalog:

    gcloud beta services identity create --service=dataplex.googleapis.com
    

    Esse comando cria o agente de serviço, se ele ainda não tiver sido provisionado, e gera o e-mail dele. Se o projeto já tiver um agente de serviço do Knowledge Catalog, o comando vai retornar a identidade atual sem fazer mudanças.

    O resultado será o seguinte:

    serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com
    

    Anote o PROJECT_NUMBER na saída para as próximas etapas.

  3. Conceda o papel de Usuário de jobs do BigQuery (roles/bigquery.jobUser) para que o Knowledge Catalog possa executar jobs de consulta no seu projeto:

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com" \
       --role="roles/bigquery.jobUser"
    

    Substitua:

    • PROJECT_ID: o ID do projeto Google Cloud .
    • PROJECT_NUMBER: o número do projeto do Google Cloud .
  4. Conceda o papel de Visualizador de dados do BigQuery (roles/bigquery.dataViewer) para que o agente de serviço possa ler os dados e o esquema da tabela:

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com" \
       --role="roles/bigquery.dataViewer"
    

    Substitua:

    • PROJECT_ID: o ID do projeto Google Cloud .
    • PROJECT_NUMBER: o número do projeto do Google Cloud .

Criar um conjunto de dados e uma tabela de amostra

Para testar as verificações de criação de perfil e qualidade de dados com segurança sem tocar nos dados de produção, configure um conjunto de dados dedicado do BigQuery e crie uma tabela com dados de amostra de compartilhamento de bicicletas com anomalias intencionais, como duplicatas e valores nulos.

Console

  1. No console do Google Cloud , acesse a página BigQuery.

    Acessar o BigQuery

  2. No painel Explorer, clique em Ver ações ao lado do ID do projeto e em Criar conjunto de dados.

  3. No campo ID do conjunto de dados, digite quickstart_data_profile.

  4. Na lista Local dos dados, selecione us-central1 (Iowa).

  5. Clique em Criar conjunto de dados.

  6. No editor de consultas, insira a seguinte consulta SQL para gerar dados de amostra de compartilhamento de bicicletas na tabela bikeshare_trips:

    CREATE OR REPLACE TABLE `PROJECT_ID.quickstart_data_profile.bikeshare_trips` AS
    SELECT
    -- Duplicate and null IDs
    IF(MOD(x, 100) = 0, NULL, IF(x > 9900, 1000 + (x - 9900), 1000 + x)) AS trip_id,
    -- Nulls and unrecognized category values
    CASE
      WHEN MOD(x, 50) = 0 THEN 'INVALID_TIER'
      WHEN MOD(x, 25) = 0 THEN NULL
      WHEN MOD(x, 4) = 0 THEN 'Local Rider'
      WHEN MOD(x, 4) = 1 THEN 'Walk Up'
      WHEN MOD(x, 4) = 2 THEN 'Student Membership'
      ELSE 'Weekender'
    END AS subscriber_type,
    -- Nulls and malformed bike IDs
    CASE
      WHEN MOD(x, 60) = 0 THEN 'UNKNOWN'
      WHEN MOD(x, 30) = 0 THEN NULL
      ELSE CAST(2000 + x AS STRING)
    END AS bike_id,
    -- Null dates and future timestamps
    CASE
      WHEN MOD(x, 70) = 0 THEN NULL
      WHEN MOD(x, 40) = 0 THEN TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL x MINUTE)
      ELSE TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL x MINUTE)
    END AS start_time,
    -- Nulls and placeholder station values
    CASE
      WHEN MOD(x, 20) = 0 THEN 'STATION_UNKNOWN'
      WHEN MOD(x, 10) = 0 THEN NULL
      ELSE CAST(100 + MOD(x, 50) AS STRING)
    END AS start_station_id,
    -- Negative durations, zeros, and extreme outliers
    CASE
      WHEN MOD(x, 15) = 0 THEN -10.0
      WHEN MOD(x, 35) = 0 THEN 0.0
      WHEN MOD(x, 200) = 0 THEN 99999.0
      ELSE CAST(MOD(x, 120) + 1.5 AS FLOAT64)
    END AS duration_minutes
    FROM UNNEST(GENERATE_ARRAY(1, 10000)) AS x;

    Substitua PROJECT_ID pelo ID do projeto do Google Cloud .

  7. Clique em Executar.

gcloud

  1. No Cloud Shell, crie o conjunto de dados quickstart_data_profile na região us-central1:

    bq --location=us-central1 mk --dataset PROJECT_ID:quickstart_data_profile
    

    Substitua PROJECT_ID pelo ID do projeto doGoogle Cloud .

  2. Crie e preencha a tabela de amostra bikeshare_trips:

    bq query \
    --use_legacy_sql=false \
    "CREATE OR REPLACE TABLE \`PROJECT_ID.quickstart_data_profile.bikeshare_trips\` AS
    SELECT
      IF(MOD(x, 100) = 0, NULL, IF(x > 9900, 1000 + (x - 9900), 1000 + x)) AS trip_id,
      CASE
        WHEN MOD(x, 50) = 0 THEN 'INVALID_TIER'
        WHEN MOD(x, 25) = 0 THEN NULL
        WHEN MOD(x, 4) = 0 THEN 'Local Rider'
        WHEN MOD(x, 4) = 1 THEN 'Walk Up'
        WHEN MOD(x, 4) = 2 THEN 'Student Membership'
        ELSE 'Weekender'
      END AS subscriber_type,
      CASE
        WHEN MOD(x, 60) = 0 THEN 'UNKNOWN'
        WHEN MOD(x, 30) = 0 THEN NULL
        ELSE CAST(2000 + x AS STRING)
      END AS bike_id,
      CASE
        WHEN MOD(x, 70) = 0 THEN NULL
        WHEN MOD(x, 40) = 0 THEN TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL x MINUTE)
        ELSE TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL x MINUTE)
      END AS start_time,
      CASE
        WHEN MOD(x, 20) = 0 THEN 'STATION_UNKNOWN'
        WHEN MOD(x, 10) = 0 THEN NULL
        ELSE CAST(100 + MOD(x, 50) AS STRING)
      END AS start_station_id,
      CASE
        WHEN MOD(x, 15) = 0 THEN -10.0
        WHEN MOD(x, 35) = 0 THEN 0.0
        WHEN MOD(x, 200) = 0 THEN 99999.0
        ELSE CAST(MOD(x, 120) + 1.5 AS FLOAT64)
      END AS duration_minutes
    FROM UNNEST(GENERATE_ARRAY(1, 10000)) AS x;"
    

Criar e executar uma verificação do perfil de dados

Uma verificação do perfil de dados analisa as linhas da tabela para calcular insights estatísticos, incluindo contagens de valores exclusivos, proporções de nulos e intervalos de distribuição de dados.

Console

  1. No console Google Cloud , acesse a página Qualidade e criação do perfil de dados.

    Acessar "Qualidade e perfilamento de dados"

  2. Clique em Criar verificação do perfil de dados.

  3. Em Escolher tipo, deixe a opção Verificação do perfil de dados selecionada.

  4. Em Geral, no campo Nome de exibição, insira bikeshare-trips-profile.

  5. Em Tabela a ser verificada, no campo Tabela, clique em Procurar, selecione a tabela quickstart_data_profile.bikeshare_trips no projeto e clique em Selecionar.

  6. Em Modo, selecione Padrão.

  7. Em Escopo, selecione Dados completos.

  8. Em Programação, selecione Sob demanda.

  9. Mantenha os valores padrão das outras configurações.

  10. Clique em Executar verificação.

    O job de verificação é iniciado. Normalmente, o Knowledge Catalog leva de 3 a 5 minutos para executar a verificação e calcular as estatísticas da tabela.

gcloud

  1. No Cloud Shell, crie a verificação do perfil de dados:

    gcloud dataplex datascans create data-profile bikeshare-trips-profile \
     --location=us-central1 \
     --data-source-resource="//bigquery.googleapis.com/projects/PROJECT_ID/datasets/quickstart_data_profile/tables/bikeshare_trips" \
     --description="Data profile scan for sample bikeshare dataset"
    

    Substitua PROJECT_ID pelo ID do projeto doGoogle Cloud .

  2. Execute a verificação do perfil de dados:

    gcloud dataplex datascans run bikeshare-trips-profile \
     --location=us-central1
    

    O job de verificação é iniciado em segundo plano. A verificação geralmente leva de 3 a 5 minutos para ser concluída.

Analisar os resultados da verificação do perfil de dados

Depois que a verificação for concluída, analise as estatísticas da coluna para entender as características dos dados.

  1. No console Google Cloud , acesse a página Qualidade e criação do perfil de dados.

    Acessar "Qualidade e perfilamento de dados"

  2. Na lista de verificações, clique em bikeshare-trips-profile.

  3. Se a verificação ainda não tiver sido executada, clique em Executar agora.

  4. Na seção Visão geral, aguarde até que o job de verificação mais recente mostre Concluído.

    A imagem a seguir mostra o job de verificação na seção Visão geral com o status Concluído:

    Seção de visão geral da verificação de perfil de viagens de compartilhamento de bicicletas, mostrando o status do job como bem-sucedido e o link "Ver resultados".

  5. Inspecione os resultados da verificação para entender a distribuição de dados da tabela e identificar possíveis metas de validação de qualidade de dados. Na guia Resultados do job mais recente, o Knowledge Catalog exibe métricas no nível da coluna, incluindo %nulo, Contagem e %exclusivos, Valores principais e Estatísticas de resumo.

    A tabela a seguir mostra qual métrica de perfil verificar para cada coluna da tabela, como interpretar os resultados e qual regra de qualidade de dados segmentar:

    Coluna da tabela Métrica de resultado do perfil O que procurar e como interpretar Destino de validação da qualidade de dados
    duration_minutes Estatísticas de resumo Valores negativos detectados: o valor mínimo é de -10.0 minutos. A duração da viagem não pode ser negativa, o que indica gravações inválidas do sensor ou da viagem. Segmentar com uma regra de Validade (intervalo) (como duration_minutes ≥ 1.0) para exigir tempos de viagem decorridos positivos.
    start_station_id Porcentagem de nulos Cerca de 5% de valores nulos: a porcentagem nula é maior que 0%, mostrando que alguns registros não têm identificadores de check-out da estação (como viagens sem estação ou quiosque). Destino com uma regra de Integridade (não nula) para capturar e sinalizar registros com IDs de estação ausentes.
    subscriber_type Principais valores Categorias inesperadas: a lista de valores frequentes mostra categorias não padrão (como INVALID_TIER) ao lado de níveis de associação válidos, indicando entrada de usuário não validada ou problemas de ingestão. Segmentar com uma regra de Validade (conjunto) para garantir que todos os valores recebidos pertençam à lista de tipos de assinatura permitidos.
    trip_id Contagem única e % IDs duplicados detectados: a exclusividade é menor que 100% (cerca de 98%), indicando registros de identificadores repetidos. As chaves primárias e os identificadores de viagem precisam ser 100% exclusivos. Segmentar com uma regra de exclusividade para sinalizar e evitar registros de viagem duplicados.

Essas descobertas de perfil fornecem uma referência baseada em evidências para criar regras de qualidade de dados direcionadas.

Criar e executar uma verificação de qualidade de dados

Agora que você descobriu como são os dados, configure regras automatizadas de qualidade de dados para detectar anomalias. Nesta etapa, você vai configurar quatro tipos de regras comuns com base nas descobertas do perfil.

Console

  1. No console Google Cloud , acesse a página Qualidade e criação do perfil de dados.

    Acessar "Qualidade e perfilamento de dados"

  2. Clique em Criar verificação de qualidade de dados.

  3. Em Geral, no campo Nome de exibição, insira bikeshare-trips-quality.

  4. Em Tabela a ser verificada, no campo Tabela, clique em Procurar, selecione a tabela quickstart_data_profile.bikeshare_trips e clique em Selecionar.

  5. Em Escopo, selecione Dados completos.

  6. Em Programação, selecione Sob demanda.

  7. Não altere as configurações restantes e clique em Continuar.

  8. Na seção Regras de qualidade de dados, clique em Adicionar regras e selecione Tipos de regras integradas.

  9. No painel Adicionar regras, selecione as colunas e os tipos de regra:

    • No campo Escolher colunas, clique em Procurar e selecione duration_minutes, start_station_id, subscriber_type e trip_id.
    • Clique em Selecionar.
    • Na lista Escolher tipos de regra, selecione Verificação de intervalo, Verificação de NULL, Verificação de conjunto de valores e Verificação de exclusividade e, em seguida, clique em OK.
    • Na lista de regras gerada, marque a caixa de seleção de cada uma das seguintes regras:

      • duration_minutes: verificação de intervalo
      • start_station_id: verificação NULL
      • subscriber_type: verificação de conjunto de valores
      • trip_id: verificação de exclusividade
    • Clique em Selecionar.

  10. Na tabela Regras de qualidade de dados, configure os parâmetros para as regras que exigem valores:

    • Em duration_minutes (Verificação de intervalo), clique em Editar, insira 1.0 no campo Valor mínimo e clique em Salvar.
    • Em subscriber_type (Verificação do conjunto de valores), clique em Editar, clique em Adicionar valor para adicionar cada um dos valores permitidos (Local Rider, Walk Up, Student Membership e Weekender) e clique em Salvar.
  11. Clique em Continuar e depois em Executar verificação.

gcloud

  1. No Cloud Shell, crie um arquivo chamado dq_bikeshare.yaml com especificações de regra que segmentem as anomalias encontradas no seu perfil:

    cat << 'EOF' > dq_bikeshare.yaml
    rules:
      - column: trip_id
        dimension: UNIQUENESS
        uniquenessExpectation: {}
      - column: start_station_id
        dimension: COMPLETENESS
        nonNullExpectation: {}
      - column: duration_minutes
        dimension: VALIDITY
        rangeExpectation:
          minValue: "1.0"
      - column: subscriber_type
        dimension: VALIDITY
        setExpectation:
          values:
            - "Local Rider"
            - "Walk Up"
            - "Student Membership"
            - "Weekender"
    EOF
    
  2. Crie a verificação de qualidade de dados:

    gcloud dataplex datascans create data-quality bikeshare-trips-quality \
     --location=us-central1 \
     --data-source-resource="//bigquery.googleapis.com/projects/PROJECT_ID/datasets/quickstart_data_profile/tables/bikeshare_trips" \
     --data-quality-spec-file="dq_bikeshare.yaml" \
     --description="Data quality scan for sample bikeshare dataset"
    

    Substitua PROJECT_ID pelo ID do projeto doGoogle Cloud .

  3. Execute a verificação de qualidade de dados:

    gcloud dataplex datascans run bikeshare-trips-quality \
     --location=us-central1
    

Analisar as avaliações de regras de qualidade de dados

Verifique os resultados da qualidade de dados para ver como as regras avaliaram os dados de amostra e identificaram anomalias.

  1. No console Google Cloud , acesse a página Qualidade e criação do perfil de dados.

    Acessar "Qualidade e perfilamento de dados"

  2. Na tabela Verificações, clique na verificação bikeshare-trips-quality.

  3. Na seção Visão geral, clique em Ver resultados para abrir os detalhes do job.

  4. No painel Detalhes do job, revise os resultados da avaliação:

    • Status da qualidade de dados: como esperado, as três dimensões avaliadas mostram o status Falha.

      • Validade: Falhou. A coluna duration_minutes contém valores negativos, e subscriber_type contém valores de associação inválidos (INVALID_TIER).
      • Integridade: falha. A coluna start_station_id contém valores nulos.
      • Exclusividade: falha. A coluna trip_id contém registros duplicados.
    • Regras: na tabela Regras, todas as quatro regras avaliadas mostram o status Com falha.

      • duration_minutes: verificação de intervalo (falha)
      • start_station_id: verificação NULL (com falha)
      • subscriber_type: verificação do conjunto de valores (falha)
      • trip_id: verificação de exclusividade (com falha)

      Para qualquer regra com falha, copie a consulta SQL na coluna Consulta para receber registros com falha e execute-a no BigQuery para isolar e inspecionar as linhas inválidas.

Você criou o perfil de uma tabela do BigQuery para descobrir estatísticas de colunas e usou esses insights para definir e validar regras automatizadas de qualidade de dados.

Limpar

Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga as etapas abaixo.

Console

  1. No console Google Cloud , acesse a página Qualidade e criação do perfil de dados.

    Acessar "Qualidade e perfilamento de dados"

  2. Na tabela Verificações, selecione bikeshare-trips-quality e bikeshare-trips-profile.

  3. Clique em Excluir e confirme.

  4. Acessar a página do BigQuery.

    Acessar o BigQuery

  5. No painel Explorador, clique em Conjuntos de dados.

  6. Selecione o conjunto de dados quickstart_data_profile e clique em Excluir.

gcloud

No Cloud Shell, exclua a verificação de qualidade de dados, a verificação do perfil de dados e o conjunto de dados de amostra:

gcloud dataplex datascans delete bikeshare-trips-quality --location=us-central1 --quiet
gcloud dataplex datascans delete bikeshare-trips-profile --location=us-central1 --quiet
bq rm -r -f -d PROJECT_ID:quickstart_data_profile

Substitua PROJECT_ID pelo ID do projeto doGoogle Cloud .

A seguir