Profiler les données et garantir leur qualité

Créez un workflow de qualité des données basé sur une stratégie de code. Ce tutoriel explique comment aller au-delà des processus manuels basés sur l'interface utilisateur en définissant les attentes en matière de qualité des données dans des fichiers déclaratifs contrôlés par version.

Grâce à une approche Human-in-the-Loop, dans laquelle l'IA rédige les règles initiales, que vous examinez, affinez et validez, vous pouvez rapidement traduire les statistiques de profil en un framework de qualité des données.

Objectifs

  • Aplatissez les données BigQuery imbriquées avec des vues matérialisées pour activer le profilage de Knowledge Catalog.
  • Exécutez des analyses de profil Knowledge Catalog à l'aide de la bibliothèque cliente Python.
  • Utilisez la CLI Gemini pour générer des règles de qualité des données basées sur des statistiques de profil.
  • Validez et déployez les règles générées par l'IA en tant qu'analyses de qualité Knowledge Catalog à l'aide d'un processus d'examen avec intervention humaine.

Avant de commencer

Avant de commencer, assurez-vous de disposer d'un Google Cloud projet pour lequel la facturation est activée.

Préparer votre environnement

Les étapes suivantes utilisent Cloud Shell, un environnement de ligne de commande exécuté dans le cloud.

  1. Dans la Google Cloud console, cliquez sur Activer Cloud Shell dans la barre d'outils située en haut à droite. L'environnement prend quelques instants pour être provisionné et se connecter.

  2. Dans Cloud Shell, configurez votre ID de projet et vos variables d'environnement :

    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"
    

    Utilisez us (multirégional) comme emplacement, car les exemples de données publiques se trouvent également dans us (multirégional). Pour les requêtes BigQuery, les données sources et la table de destination doivent se trouver au même emplacement.

  3. Activez les services requis :

    gcloud services enable dataplex.googleapis.com \
                           bigquery.googleapis.com \
                           serviceusage.googleapis.com
    
  4. Créez un ensemble de données BigQuery pour stocker les exemples de données et les résultats :

    bq --location=us mk --dataset $PROJECT_ID:$DATASET_ID
    
  5. Préparez les exemples de données, qui proviennent d'un ensemble de données d'e-commerce public du Google Merchandise Store.

    La commande bq suivante crée une table ga4_transactions dans votre ensemble de données dataplex_dq_codelab. Pour que les analyses s'exécutent rapidement, elle ne copie les données que d'un seul jour (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. Clonez le dépôt GitHub contenant la structure de dossiers et les fichiers d'assistance de ce tutoriel :

    # 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
    

    Ce répertoire est votre zone de travail active.

Profiler les données imbriquées

Avec le profilage des données, Knowledge Catalog trouve des statistiques pour les colonnes de niveau supérieur, telles que les pourcentages de valeurs nulles, l'unicité et les distributions de valeurs dans vos données, afin de vous aider à les comprendre.

Pour obtenir des statistiques sur les champs imbriqués, vous pouvez aplatir les données à l'aide d'un ensemble de vues matérialisées. Chaque champ imbriqué est ainsi transformé en une colonne de niveau supérieur que Knowledge Catalog peut profiler.

Obtenir le schéma imbriqué

Obtenez le schéma complet de votre table source, y compris toutes les structures imbriquées, et enregistrez la sortie dans un fichier JSON :

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

Afficher le schéma :

jq < bq_schema.json

Le fichier bq_schema.json révèle des structures complexes.

Aplatir les données avec une vue matérialisée

Lorsque vous aplatissez des données imbriquées, il est important de ne pas désimbriquer plusieurs tableaux indépendants dans la même vue. Cela effectue une jointure croisée implicite (produit cartésien) entre les tableaux, ce qui multiplie les lignes de manière incorrecte et corrompt vos données.

Il est préférable de créer plusieurs vues, chacune conçue pour un objectif spécifique. Chaque vue doit conserver un seul niveau de détail clair. Au cours de cette étape, vous allez créer les vues matérialisées suivantes :

  • Vue plate de la session (mv_ga4_user_session_flat.sql) : une ligne par événement.
  • Vue des transactions (mv_ga4_ecommerce_transactions.sql) : une ligne par transaction.
  • Vue des articles (mv_ga4_ecommerce_items.sql) : une ligne par article.

Le dépôt du projet fournit trois fichiers SQL dans le répertoire devrel-demos/data-analytics/programmatic-dq qui définissent ces vues.

Exécutez ces fichiers à partir de Cloud Shell à l'aide des commandes BigQuery suivantes.

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

Exécuter des analyses de profil avec le client Python

Vous pouvez maintenant créer et exécuter des analyses de profil de données Knowledge Catalog pour chaque vue matérialisée. Le script Python suivant utilise la bibliothèque cliente google-cloud-dataplex pour automatiser ce processus.

Avant d'exécuter le script, créez un environnement virtuel Python isolé dans le répertoire de votre projet.

# Create the virtual environment
python3 -m venv dq_venv

# Activate the environment
source dq_venv/bin/activate

Installez la bibliothèque cliente Knowledge Catalog dans l'environnement virtuel.

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

Maintenant que vous avez configuré l'environnement et installé la bibliothèque, vous êtes prêt à utiliser le script 1_run_dataplex_scans.py. Ce script profile vos trois vues matérialisées en créant et en exécutant une analyse pour chacune d'elles. Une fois terminé, il génère un résumé statistique enrichi que vous utiliserez à l'étape suivante pour générer des règles de qualité des données basées sur l'IA.

Exécutez le script à partir de votre terminal Cloud Shell.

python3 1_run_dataplex_scans.py

Vérifier vos analyses de profil

Vous pouvez consulter les nouvelles analyses de profil dans la Google Cloud console.

  1. Dans le menu de navigation, accédez à Knowledge Catalog , puis sélectionnez Qualité et profilage des données dans la section Gouvernance.
  2. Recherchez vos trois analyses de profil dans la liste, ainsi que l'état de leur dernier job. Cliquez sur une analyse pour explorer ses résultats détaillés.

Exporter les résultats de profil au format JSON

Pour que Gemini puisse lire vos analyses de profil, vous devez extraire leur contenu dans un fichier local.

Utilisez le script 2_dq_profile_save.py pour rechercher la dernière analyse réussie de la vue mv_ga4_user_session_flat, télécharger les données de profil et les enregistrer dans un fichier nommé dq_profile_results.json.

python3 2_dq_profile_save.py

Une fois le script terminé, il crée un fichier dq_profile_results.json dans le répertoire. Ce fichier contient les métadonnées statistiques détaillées dont vous avez besoin pour générer des règles de qualité des données. Consultez son contenu en exécutant la commande suivante :

cat dq_profile_results.json

Générer des règles de qualité des données avec la CLI Gemini

Vous pouvez maintenant utiliser la CLI Gemini pour lire les résultats de l'analyse de profil locale.

L'écriture manuelle de règles de qualité des données pour des ensembles de données complexes prend du temps et est sujette aux erreurs. L'IA générative accélère ce workflow en générant une configuration initiale complète de la qualité des données en quelques secondes. Cela vous permet de passer de l'exécution manuelle des tâches à une supervision de haut niveau.

Pour démarrer la CLI Gemini, utilisez la commande suivante :

gemini

Vous êtes maintenant prêt à générer des règles de qualité. Comme la CLI peut lire les fichiers de votre répertoire actuel, elle peut utiliser directement vos nouvelles données d'analyse de profil.

Demander à Gemini de créer un plan

Demandez à Gemini d'agir en tant qu'analyste expert et de proposer un plan pour créer vos règles de qualité des données. Indiquez à Gemini de ne pas encore écrire le fichier YAML afin qu'il se concentre sur l'analyse. Gemini analyse le fichier JSON et renvoie un plan structuré.

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.

Générer des règles de qualité des données

Le plan de Gemini repose entièrement sur des modèles statistiques et ne tient pas compte de vos connaissances spécifiques de l'entreprise.

Examinez le plan et posez-vous les questions suivantes :

  • Est-il conforme à vos objectifs et à votre contexte commerciaux ?
  • Certaines règles statistiquement valables sont-elles en fait peu pratiques (comme un rowCount strict pour une table en pleine croissance) ?

Affinez le plan avec Gemini ou approuvez-le tel quel à l'aide de l'exemple d'invite suivant. L'invite commence par fournir des commentaires, puis demande à Gemini de générer le fichier dq_rules.yaml dans votre répertoire de travail et de se conformer à la spécification DataQualityRule, car Knowledge Catalog nécessite une structure YAML précise. Cela permet d'éviter les erreurs de syntaxe ou l'utilisation de versions de schéma obsolètes.


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

Créer et exécuter une analyse de la qualité des données

Vous disposez maintenant d'un ensemble de règles de qualité des données générées par un agent que vous pouvez enregistrer et déployer en tant qu'analyse.

  1. Quittez la CLI Gemini en saisissant /quit ou en appuyant deux fois sur Ctrl+C.

  2. Créez ensuite une analyse de données dans 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. Enfin, exécutez l'analyse :

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

    Cette commande crée une analyse de la qualité des données nommée dq-scan.

  4. Vérifiez la progression de votre analyse dans la section Knowledge Catalog de la Google Cloud console.

    1. Dans le menu de navigation, accédez à Knowledge Catalog , puis sélectionnez Qualité et profilage des données dans la section Gouvernance.
    2. Recherchez l'analyse dq-scan. Une fois l'analyse terminée, cliquez dessus pour afficher les résultats.

Libérer de l'espace

Pour éviter des frais de facturation récurrents pour les ressources que vous avez créées dans ce tutoriel, supprimez-les.

Supprimer les analyses Knowledge Catalog

Supprimez vos analyses de profil et de qualité à l'aide des noms d'analyse spécifiques de cet atelier de programmation :

# 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

Supprimer l'exemple d'ensemble de données

Supprimez votre ensemble de données BigQuery temporaire et ses tables.

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

Supprimer les fichiers locaux

Désactivez l'environnement virtuel Python et supprimez le dépôt cloné et son contenu :

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

Conclusion

Félicitations, vous venez de créer un workflow de gouvernance des données de bout en bout.

En associant Gemini à Knowledge Catalog, vous avez créé une base pour la gouvernance assistée par l'IA. Cette approche ne remplace pas la boucle de gouvernance, mais accélère le processus de création de règles afin que vous puissiez vous concentrer sur la validation et l'affinage des règles en fonction de votre logique métier.

Étape suivante