Profila e garantisci la qualità dei dati

Crea un flusso di lavoro di qualità dei dati policy-as-code. Questo tutorial spiega come andare oltre i processi manuali basati sull'interfaccia utente definendo le aspettative di qualità dei dati in file dichiarativi con controllo delle versioni.

Utilizzando un approccio Human-in-the-Loop , in cui l'AI crea le regole iniziali e tu le esamini, le perfezioni e le convalidi, puoi tradurre rapidamente le statistiche del profilo in un framework di qualità dei dati.

Obiettivi

  • Appiattisci i dati BigQuery nidificati con le viste materializzate per abilitare la profilazione di Knowledge Catalog.
  • Esegui le scansioni del profilo di Knowledge Catalog utilizzando la libreria client Python.
  • Utilizza Gemini CLI per generare regole di qualità dei dati in base alle statistiche del profilo.
  • Convalida ed esegui il deployment delle regole generate dall'AI come scansioni di qualità di Knowledge Catalog utilizzando un processo di revisione human-in-the-loop.

Prima di iniziare

Prima di iniziare, assicurati di avere un Google Cloud progetto con la fatturazione abilitata.

prepara l'ambiente

I passaggi seguenti utilizzano Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.

  1. Nella Google Cloud console, fai clic su Attiva Cloud Shell nella barra degli strumenti in alto a destra. L'ambiente richiede alcuni istanti per il provisioning e la connessione.

  2. In Cloud Shell, configura l'ID progetto e le variabili di 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"
    

    Utilizza us (più regioni) come località, poiché anche i dati di esempio pubblici si trovano in us (più regioni). Per le query BigQuery, i dati di origine e la tabella di destinazione devono trovarsi nella stessa località.

  3. Abilita i servizi richiesti:

    gcloud services enable dataplex.googleapis.com \
                           bigquery.googleapis.com \
                           serviceusage.googleapis.com
    
  4. Crea un set di dati BigQuery per archiviare i dati di esempio e i risultati:

    bq --location=us mk --dataset $PROJECT_ID:$DATASET_ID
    
  5. Prepara i dati di esempio, che provengono da un set di dati di e-commerce pubblico del Google Merchandise Store.

    Il seguente comando bq crea una nuova tabella, ga4_transactions, nel set di dati dataplex_dq_codelab. Per garantire che le scansioni vengano eseguite rapidamente, copia solo i dati di un giorno (2021-01-31).

    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. Clona il repository GitHub che contiene la struttura delle cartelle e i file di supporto per questo 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
    

    Questa directory è l'area di lavoro attiva.

Profila i dati nidificati

Con la profilazione dei dati, Knowledge Catalog trova statistiche per le colonne di primo livello, come percentuali di valori null, unicità e distribuzioni dei valori nei dati per aiutarti a comprenderli.

Per ottenere statistiche per i campi nidificati, puoi appiattire i dati utilizzando un insieme di viste materializzate. In questo modo, ogni campo nidificato viene trasformato in una colonna di primo livello che Knowledge Catalog può profilare.

Ottieni lo schema nidificato

Ottieni lo schema completo della tabella di origine, incluse tutte le strutture nidificate, e salva l'output come file JSON:

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

Visualizza lo schema:

jq < bq_schema.json

Il file bq_schema.json rivela strutture complesse.

Appiattisci i dati con una vista materializzata

Quando appiattisci i dati nidificati, è importante non annidare più array indipendenti nella stessa visualizzazione. In questo modo, viene eseguito un cross join implicito (prodotto cartesiano) tra gli array, che moltiplica le righe in modo errato e danneggia i dati.

È preferibile creare più visualizzazioni, ognuna creata per uno scopo specifico. Ogni visualizzazione deve mantenere un singolo livello di dettaglio chiaro. In questo passaggio devi creare le seguenti viste materializzate:

  • Visualizzazione piatta della sessione (mv_ga4_user_session_flat.sql): una riga per evento.
  • Visualizzazione delle transazioni (mv_ga4_ecommerce_transactions.sql): una riga per transazione.
  • Visualizzazione degli articoli (mv_ga4_ecommerce_items.sql): una riga per articolo.

Il repository del progetto fornisce tre file SQL nella directory devrel-demos/data-analytics/programmatic-dq che definiscono queste visualizzazioni.

Esegui questi file da Cloud Shell utilizzando i seguenti comandi 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

Esegui le scansioni del profilo con il client Python

Ora puoi creare ed eseguire scansioni del profilo dei dati di Knowledge Catalog per ogni vista materializzata. Il seguente script Python utilizza la libreria client google-cloud-dataplex per automatizzare questo processo.

Prima di eseguire lo script, crea un ambiente virtuale Python isolato nella directory del progetto.

# Create the virtual environment
python3 -m venv dq_venv

# Activate the environment
source dq_venv/bin/activate

Installa la libreria client di Knowledge Catalog all'interno dell'ambiente virtuale.

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

Ora che hai configurato l'ambiente e installato la libreria, puoi utilizzare lo script 1_run_dataplex_scans.py. Questo script profila le tre viste materializzate creando ed eseguendo una scansione per ognuna. Al termine, genera un riepilogo statistico completo che utilizzerai nel passaggio successivo per generare regole di qualità dei dati basate sull'AI.

Esegui lo script dal terminale Cloud Shell.

python3 1_run_dataplex_scans.py

Controlla le scansioni del profilo

Puoi controllare le nuove scansioni del profilo nella Google Cloud console.

  1. Nel menu di navigazione, vai a Knowledge Catalog e seleziona Profilazione e qualità dei dati nella sezione Gestisci.
  2. Trova le tre scansioni del profilo elencate, insieme allo stato del job più recente. Fai clic su una scansione per esplorarne i risultati dettagliati.

Esporta i risultati del profilo in JSON

Affinché Gemini possa leggere le scansioni del profilo, devi estrarne i contenuti in un file locale.

Utilizza lo script 2_dq_profile_save.py per trovare l'ultima scansione riuscita per la visualizzazione mv_ga4_user_session_flat, scaricare i dati del profilo e salvarli in un file denominato dq_profile_results.json.

python3 2_dq_profile_save.py

Al termine dello script, viene creato un file dq_profile_results.json nella directory. Questo file contiene i metadati statistici dettagliati necessari per generare regole di qualità dei dati. Dai un'occhiata ai contenuti eseguendo il seguente comando:

cat dq_profile_results.json

Genera regole di qualità dei dati con Gemini CLI

Ora puoi utilizzare Gemini CLI per leggere i risultati della scansione di profilazione locale.

La scrittura manuale di regole di qualità dei dati per set di dati complessi richiede molto tempo ed è soggetta a errori. L'AI generativa accelera questo flusso di lavoro generando in pochi secondi una configurazione iniziale completa della qualità dei dati. In questo modo, puoi passare dall'esecuzione manuale delle attività alla supervisione di alto livello.

Per avviare Gemini CLI, utilizza il seguente comando:

gemini

Ora puoi generare regole di qualità. Poiché la CLI può leggere i file nella directory corrente, può utilizzare direttamente i nuovi dati di scansione di profilazione.

Chiedi a Gemini di creare un piano

Chiedi a Gemini di agire come un analista esperto e di proporre un piano per la creazione delle regole di qualità dei dati. Chiedi a Gemini di non scrivere ancora il file YAML in modo che si concentri sull'analisi. Gemini analizza il file JSON e restituisce un piano strutturato

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.

Genera regole di qualità dei dati

Il piano di Gemini si basa interamente su pattern statistici e non tiene conto delle tue conoscenze specifiche dell'attività.

Esamina il piano e poni le seguenti domande:

  • È in linea con i tuoi obiettivi di business e il tuo contesto?
  • Esistono regole statisticamente valide che in realtà sono impraticabili (ad esempio un rowCount rigoroso per una tabella in crescita)?

Perfeziona il piano con Gemini o approvalo così com'è utilizzando il seguente prompt di esempio. Il prompt inizia fornendo alcuni feedback, quindi indica a Gemini di generare il file dq_rules.yaml nella directory di lavoro e di rispettare la specifica DataQualityRule perché Knowledge Catalog richiede una struttura YAML precisa. In questo modo si evitano errori di sintassi o l'utilizzo di versioni dello schema obsolete.


- "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.

Crea ed esegui una scansione della qualità dei dati

Ora hai un insieme di regole di qualità dei dati generate dall'agente che puoi registrare ed eseguire il deployment come scansione.

  1. Esci da Gemini CLI inserendo /quit o premendo Ctrl+C due volte.

  2. Quindi, crea una scansione dei dati in 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. Infine, esegui la scansione:

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

    Questo comando crea una scansione della qualità dei dati denominata dq-scan.

  4. Controlla lo stato di avanzamento della scansione nella sezione Knowledge Catalog della Google Cloud console.

    1. Nel menu di navigazione, vai a Knowledge Catalog e seleziona Profilazione e qualità dei dati nella sezione Gestisci.
    2. Trova dq-scan. Al termine della scansione, fai clic sulla scansione per visualizzare i risultati.

Libera spazio

Per evitare addebiti di fatturazione ricorrenti per le risorse create in questo tutorial, eliminale.

Elimina le scansioni di Knowledge Catalog

Elimina le scansioni del profilo e della qualità utilizzando i nomi di scansione specifici di questo 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

Elimina il set di dati di esempio

Elimina il set di dati BigQuery temporaneo e le relative tabelle.

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

Elimina i file locali

Disattiva l'ambiente virtuale Python e rimuovi il repository clonato e i relativi contenuti:

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

Conclusione

Complimenti, hai appena creato un flusso di lavoro di governance dei dati end-to-end e programmatico.

Combinando Gemini con Knowledge Catalog, hai creato una base per la governance assistita dall'AI. Questo approccio non sostituisce il ciclo di governance, ma accelera il processo di creazione delle regole in modo che tu possa concentrarti sulla convalida e sul perfezionamento delle regole in base alla tua logica di business.

Passaggi successivi