Criar perfil e garantir a qualidade dos dados

Criar um fluxo de trabalho de qualidade de dados de política como código. Este tutorial mostra como ir além dos processos manuais orientados pela UI definindo expectativas de qualidade de dados em arquivos declarativos e controlados por versão.

Usando uma abordagem Human-in-the-Loop, em que a IA cria as regras iniciais e você as revisa, refina e valida, é possível traduzir rapidamente as estatísticas de perfil em uma estrutura de qualidade de dados.

Objetivos

  • Achatam dados aninhados do BigQuery com visualizações materializadas para ativar a criação de perfil do Knowledge Catalog.
  • Execute verificações de perfil do Knowledge Catalog usando a biblioteca de cliente Python.
  • Use a CLI do Gemini para gerar regras de qualidade de dados com base em estatísticas de perfil.
  • Valide e implante regras geradas com IA como verificações de qualidade do Knowledge Catalog usando um processo de revisão Human-in-the-Loop.

Antes de começar

Antes de começar, verifique se você tem um projeto do Google Cloud com o faturamento ativado.

Preparar o ambiente

As etapas a seguir usam o Cloud Shell, um ambiente de linha de comando executado na nuvem.

  1. No console do Google Cloud , clique em Ativar o Cloud Shell na barra de ferramentas no canto superior direito. O provisionamento e a conexão do ambiente podem levar alguns instantes.

  2. No Cloud Shell, configure o ID do projeto e as variáveis de ambiente:

    export PROJECT_ID=$(gcloud config get-value project)
    gcloud config set project $PROJECT_ID
    export LOCATION="us-central1"
    export BQ_LOCATION="us"
    export DATASET_ID="dataplex_dq_codelab"
    export TABLE_ID="ga4_transactions"
    

    Use us (multirregião) como o local, já que os dados de amostra públicos também estão localizados em us (multirregião). Para consultas do BigQuery, os dados de origem e a tabela de destino precisam estar no mesmo local.

  3. Ative os serviços necessários:

    gcloud services enable dataplex.googleapis.com \
                           bigquery.googleapis.com \
                           serviceusage.googleapis.com
    
  4. Crie um conjunto de dados do BigQuery para armazenar dados de amostra e resultados:

    bq --location=us mk --dataset $PROJECT_ID:$DATASET_ID
    
  5. Prepare os dados de amostra, que vêm de um conjunto de dados público de e-commerce da Google Merchandise Store.

    O comando bq a seguir cria uma tabela, ga4_transactions, no conjunto de dados dataplex_dq_codelab. Para garantir que as verificações sejam executadas rapidamente, ele copia apenas os dados de um dia (31/01/2021).

    bq query \
    --use_legacy_sql=false \
    --destination_table=$PROJECT_ID:$DATASET_ID.$TABLE_ID \
    --replace=true \
    'SELECT * FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_20210131`'
    
  6. Clone o repositório do GitHub que contém a estrutura de pastas e os arquivos de suporte para este tutorial:

    # Perform a shallow clone to get only the latest repository structure without the full history
    git clone --depth 1 --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/devrel-demos.git
    cd devrel-demos
    
    # Specify and download only the folder we need for this lab
    git sparse-checkout set data-analytics/programmatic-dq
    cd data-analytics/programmatic-dq
    

    Esse diretório é sua área de trabalho ativa.

Dados aninhados do perfil

Com a criação de perfil de dados, o Knowledge Catalog encontra estatísticas para colunas de nível superior, como porcentagens de nulos, exclusividade e distribuições de valores nos seus dados para ajudar você a entender.

Para receber estatísticas de campos aninhados, você pode achatar os dados usando um conjunto de visualizações materializadas. Isso transforma cada campo aninhado em uma coluna de nível superior que o Knowledge Catalog pode criar um perfil.

Receber o esquema aninhado

Extraia o esquema completo da sua tabela de origem, incluindo todas as estruturas aninhadas, e salve a saída como um arquivo JSON:

bq show --schema --format=json $PROJECT_ID:$DATASET_ID.$TABLE_ID > bq_schema.json

Confira o esquema:

jq < bq_schema.json

O arquivo bq_schema.json revela estruturas complexas.

Simplificar dados com uma visualização materializada

Ao achatar dados aninhados, é importante não desagrupar várias matrizes independentes na mesma visualização. Isso realiza uma correlação implícita (produto cartesiano) entre as matrizes, o que multiplica as linhas incorretamente e corrompe seus dados.

É melhor criar várias visualizações, cada uma criada para uma finalidade específica. Cada visualização deve manter um único nível de detalhes claro. Nesta etapa, você vai criar as seguintes visualizações materializadas:

  • Visualização simples de sessão (mv_ga4_user_session_flat.sql): uma linha por evento.
  • Visualização "Transações" (mv_ga4_ecommerce_transactions.sql): uma linha por transação.
  • Visualização de itens (mv_ga4_ecommerce_items.sql): uma linha por item.

O repositório do projeto fornece três arquivos SQL no diretório devrel-demos/data-analytics/programmatic-dq que definem essas visualizações.

Execute esses arquivos no Cloud Shell usando os seguintes comandos do BigQuery.

envsubst < mv_ga4_user_session_flat.sql | bq query --use_legacy_sql=false
envsubst < mv_ga4_ecommerce_transactions.sql | bq query --use_legacy_sql=false
envsubst < mv_ga4_ecommerce_items.sql | bq query --use_legacy_sql=false

Executar verificações de perfil com o cliente Python

Agora é possível criar e executar verificações do perfil de dados do Knowledge Catalog para cada visualização materializada. O script Python a seguir usa a biblioteca de cliente google-cloud-dataplex para automatizar esse processo.

Antes de executar o script, crie um ambiente virtual Python isolado no diretório do projeto.

# Create the virtual environment
python3 -m venv dq_venv

# Activate the environment
source dq_venv/bin/activate

Instale a biblioteca de cliente do Knowledge Catalog no ambiente virtual.

# Install the Dataplex client library
pip install google-cloud-dataplex

Agora que você configurou o ambiente e instalou a biblioteca, está tudo pronto para usar o script 1_run_dataplex_scans.py. Esse script cria um perfil das três visualizações materializadas criando e executando uma verificação para cada uma delas. Quando terminar, ele vai gerar um resumo estatístico detalhado que você vai usar na próxima etapa para gerar regras de qualidade de dados com tecnologia de IA.

Execute o script no terminal do Cloud Shell.

python3 1_run_dataplex_scans.py

Verificar suas verificações de perfis

Confira as novas verificações de perfil no console Google Cloud .

  1. No menu de navegação, acesse Knowledge Catalog e selecione Qualidade e criação do perfil de dados na seção Governança.
  2. Encontre as três verificações de perfil listadas, junto com o status do job mais recente. Clique em uma verificação para conferir os resultados detalhados.

Exportar resultados de perfil para JSON

Para que o Gemini leia as verificações do seu perfil, extraia o conteúdo delas para um arquivo local.

Use o script 2_dq_profile_save.py para encontrar a verificação mais recente da visualização mv_ga4_user_session_flat, faça o download dos dados de perfil e salve-os em um arquivo chamado dq_profile_results.json.

python3 2_dq_profile_save.py

Quando o script terminar, ele vai criar um arquivo dq_profile_results.json no diretório. Esse arquivo contém os metadados estatísticos detalhados necessários para gerar regras de qualidade de dados. Confira o conteúdo dele executando o comando a seguir:

cat dq_profile_results.json

Gerar regras de qualidade de dados com a CLI do Gemini

Agora você pode usar a CLI do Gemini para ler os resultados da verificação do perfil local.

Escrever manualmente regras de qualidade de dados para conjuntos de dados complexos é demorado e propenso a erros. A IA generativa acelera esse fluxo de trabalho gerando uma configuração inicial abrangente de qualidade de dados em segundos. Isso ajuda você a passar da execução manual de tarefas para uma supervisão de alto nível.

Para iniciar a CLI do Gemini, use o seguinte comando:

gemini

Agora você já pode gerar regras de qualidade. Como a CLI pode ler arquivos no diretório atual, ela pode usar diretamente os novos dados de verificação do perfil.

Pedir ao Gemini para criar um plano

Peça ao Gemini para agir como um analista especialista e propor um plano para criar suas regras de qualidade de dados. Diga ao Gemini para não gravar o arquivo YAML ainda para que ele se concentre na análise. O Gemini analisa o arquivo JSON e retorna um plano estruturado

You are an expert Google Cloud Dataplex engineer.
Your first task is to create a plan. I have a file in the current directory named ./dq_profile_results.json.
Based on the statistical data within that file, propose a step-by-step plan to create a Dataplex data quality rules file.
Your plan should identify which specific columns are good candidates for rules like nonNullExpectation, setExpectation, or rangeExpectation, and explain why based on the metrics (for example, "Plan to create a nonNullExpectation for column X because its null percentage is 0%").
Do not write the YAML file yet. Just provide the plan.

Gerar regras de qualidade de dados

O plano do Gemini se baseia totalmente em padrões estatísticos e não tem conhecimento específico sobre sua empresa.

Analise o plano e responda às seguintes perguntas:

  • Ele está alinhado às metas e ao contexto da sua empresa?
  • Alguma regra estatisticamente válida é impraticável (como um rowCount estrito para uma tabela crescente)?

Refine o plano com o Gemini ou aprove-o como está usando o exemplo de comando a seguir. O comando começa com um feedback e depois instrui o Gemini a gerar o arquivo dq_rules.yaml no diretório de trabalho e a obedecer à especificação DataQualityRule, porque o Knowledge Catalog exige uma estrutura YAML precisa. Isso ajuda a evitar erros de sintaxe ou o uso de versões de esquema desatualizadas.


- "The plan looks good. Please proceed."
- "The rowCount rule is not necessary, as the table size changes daily. The rest of the plan is approved. Please proceed."
- "For the setExpectation on the geo_continent column, please also include 'Antarctica'."

Once you have incorporated my feedback, please generate the `dq_rules.yaml` file.

You must adhere to the following strict requirements:

- Schema Compliance: The YAML structure must strictly conform to the DataQualityRule specification. For a definitive source of truth, you must refer to the sample_rule.yaml file in the current directory and the DataQualityRule class definition. Search for the `data_quality.py` file inside the `./dq_venv/lib/` directory to read this class definition.

- Data-Driven Values: All rule parameters, such as thresholds or expected values, must be derived directly from the statistical metrics in dq_profile_results.json.

- Rule Justification: For each rule, add a comment (#) on the line above explaining the justification, as you outlined in your plan.

- Output Purity: The final output must only be the raw YAML code block, perfectly formatted and ready for immediate deployment.

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

Agora você tem um conjunto de regras de qualidade de dados geradas por um agente que pode registrar e implantar como uma verificação.

  1. Saia da CLI do Gemini digitando /quit ou pressionando Ctrl+C duas vezes.

  2. Em seguida, crie uma verificação de dados no Knowledge Catalog:

    export DQ_SCAN="dq-scan"
    gcloud dataplex datascans create data-quality $DQ_SCAN \
        --project=$PROJECT_ID \
        --location=$LOCATION \
        --data-quality-spec-file=dq_rules.yaml \
        --data-source-resource="//bigquery.googleapis.com/projects/$PROJECT_ID/datasets/$DATASET_ID/tables/mv_ga4_user_session_flat"
    
  3. Por fim, execute a verificação:

    gcloud dataplex datascans run $DQ_SCAN --location=$LOCATION --project=$PROJECT_ID
    

    Esse comando cria uma verificação de qualidade de dados chamada dq-scan.

  4. Verifique o andamento da verificação na seção "Knowledge Catalog" do Google Cloud console.

    1. No menu de navegação, acesse Knowledge Catalog e selecione Qualidade e criação do perfil de dados na seção Governança.
    2. Encontre o dq-scan. Quando a verificação for concluída, clique nela para conferir os resultados.

Limpar

Para evitar cobranças recorrentes pelos recursos criados neste tutorial, exclua-os.

Excluir as verificações do Knowledge Catalog

Exclua seu perfil e as verificações de qualidade usando os nomes específicos deste codelab:

# Delete the Data Quality Scan
gcloud dataplex datascans delete dq-scan \
    --location=us-central1 \
    --project=$PROJECT_ID --quiet

# Delete the Data Profile Scans
gcloud dataplex datascans delete profile-scan-mv-ga4-user-session-flat \
    --location=us-central1 \
    --project=$PROJECT_ID --quiet

gcloud dataplex datascans delete profile-scan-mv-ga4-ecommerce-transactions \
    --location=us-central1 \
    --project=$PROJECT_ID --quiet

gcloud dataplex datascans delete profile-scan-mv-ga4-ecommerce-items \
    --location=us-central1 \
    --project=$PROJECT_ID --quiet

Excluir o conjunto de dados de amostra

Exclua o conjunto de dados temporário do BigQuery e as tabelas dele.

bq rm -r -f --dataset $PROJECT_ID:dataplex_dq_codelab

Excluir arquivos locais

Desative o ambiente virtual do Python e remova o repositório clonado e o conteúdo dele:

deactivate
cd ../../..
rm -rf devrel-demos

Conclusão

Parabéns, você acabou de criar um fluxo de trabalho de governança de dados programático e completo.

Ao combinar o Gemini com o Knowledge Catalog, você criou uma base para a governança com assistência de IA. Essa abordagem não substitui o ciclo de governança, mas acelera o processo de criação de regras para que você possa se concentrar na validação e no refinamento com base na sua lógica de negócios.

A seguir