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.
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.
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 emus(multirregião). Para consultas do BigQuery, os dados de origem e a tabela de destino precisam estar no mesmo local.Ative os serviços necessários:
gcloud services enable dataplex.googleapis.com \ bigquery.googleapis.com \ serviceusage.googleapis.comCrie um conjunto de dados do BigQuery para armazenar dados de amostra e resultados:
bq --location=us mk --dataset $PROJECT_ID:$DATASET_IDPrepare os dados de amostra, que vêm de um conjunto de dados público de e-commerce da Google Merchandise Store.
O comando
bqa seguir cria uma tabela,ga4_transactions, no conjunto de dadosdataplex_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`'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-dqEsse 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 .
- No menu de navegação, acesse Knowledge Catalog e selecione Qualidade e criação do perfil de dados na seção Governança.
- 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.
Saia da CLI do Gemini digitando
/quitou pressionandoCtrl+Cduas vezes.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"Por fim, execute a verificação:
gcloud dataplex datascans run $DQ_SCAN --location=$LOCATION --project=$PROJECT_IDEsse comando cria uma verificação de qualidade de dados chamada
dq-scan.Verifique o andamento da verificação na seção "Knowledge Catalog" do Google Cloud console.
- No menu de navegação, acesse Knowledge Catalog e selecione Qualidade e criação do perfil de dados na seção Governança.
- 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
- Leia mais sobre a filosofia por trás dessa arquitetura em Governança assistida por IA: aceleração da qualidade de dados com supervisão humana.
- Gerencie a qualidade de dados como código criando um pipeline de CI/CD.
- Use regras SQL personalizadas para aplicar uma lógica específica da empresa.
- Otimize suas verificações com filtros e amostragem para reduzir custos.
- Automatize sua infraestrutura provisionando recursos do Knowledge Catalog com o Terraform para gerenciar a governança de dados em grande escala.
- Saiba mais sobre o agente de IA de código aberto da CLI do Gemini.
- Confira outros casos de uso do Knowledge Catalog