Profiler et valider la qualité des données
Knowledge Catalog (anciennement Dataplex Universal Catalog) vous permet de profiler des tables BigQuery pour calculer des statistiques au niveau des colonnes, telles que les pourcentages de valeurs nulles, le nombre de valeurs uniques et la distribution des valeurs. Vous pouvez ensuite utiliser ces insights pour définir des règles de qualité des données et valider vos enregistrements pour détecter les anomalies.
Dans ce guide de démarrage rapide, vous allez remplir un exemple de table BigQuery avec des anomalies intentionnelles, exécuter une analyse de profilage des données et évaluer les résultats avec une analyse de la qualité des données. Pour en savoir plus, consultez À propos du profilage des données et À propos de la qualité automatique des données.
Avant de commencer
Configurez votre projet :
- Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
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.
-
Verify that billing is enabled for your Google Cloud project.
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.enablepermission. 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.-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
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.
-
Verify that billing is enabled for your Google Cloud project.
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.enablepermission. 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.
Rôles requis
Pour obtenir les autorisations nécessaires pour créer et exécuter des analyses de profil et de qualité des données, et gérer les ressources BigQuery, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :
-
Créer, exécuter et supprimer des analyses de données : Éditeur Dataplex DataScan (
roles/dataplex.dataScanEditor) -
Créer, remplir et supprimer des exemples de tables : Propriétaire de données BigQuery (
roles/bigquery.dataOwner) -
Exécuter des requêtes SQL dans BigQuery : Utilisateur de job BigQuery (
roles/bigquery.jobUser)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Si vous disposez des autorisations nécessaires pour gérer l'accès IAM dans votre projet, vous pouvez accorder ces rôles à votre propre compte utilisateur en exécutant les commandes gcloud suivantes :
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"
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet Google Cloud .USER_EMAIL: adresse e-mail de votre compte utilisateur (par exemple,name@example.com).
Accorder des autorisations à l'agent de service Knowledge Catalog
Un agent de service est un compte de service géré par Google que Knowledge Catalog utilise pour exécuter des requêtes d'analyse dans BigQuery en votre nom.
Dans la console Google Cloud , cliquez sur Activer Cloud Shell dans la barre d'outils. Le provisionnement et la connexion à l'environnement prennent quelques instants.
Créez l'agent de service Knowledge Catalog :
gcloud beta services identity create --service=dataplex.googleapis.comCette commande crée l'agent de service s'il n'a pas encore été provisionné et affiche son adresse e-mail. Si votre projet dispose déjà d'un agent de service Knowledge Catalog, la commande renvoie l'identité existante sans apporter de modifications.
Le résultat ressemble à ce qui suit :
serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.comNotez l'élément
PROJECT_NUMBERdans le résultat pour les étapes suivantes.Attribuez le rôle Utilisateur de job BigQuery (
roles/bigquery.jobUser) pour que Knowledge Catalog puisse exécuter des jobs de requête dans votre projet :gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com" \ --role="roles/bigquery.jobUser"
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet Google Cloud .PROJECT_NUMBER: numéro de votre projet Google Cloud .
Attribuez le rôle Lecteur de données BigQuery (
roles/bigquery.dataViewer) pour que l'agent de service puisse lire les données et le schéma de votre table :gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com" \ --role="roles/bigquery.dataViewer"
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet Google Cloud .PROJECT_NUMBER: numéro de votre projet Google Cloud .
Créer un exemple d'ensemble de données et de table
Pour tester le profilage et les analyses de la qualité des données en toute sécurité sans toucher aux données de production, configurez un ensemble de données BigQuery dédié et créez une table contenant des exemples de données de vélos en libre-service avec des anomalies intentionnelles, telles que des doublons et des valeurs nulles.
Console
Dans la console Google Cloud , accédez à la page BigQuery.
Dans le volet Explorateur, cliquez sur Afficher les actions à côté de l'ID de votre projet, puis sur Créer un ensemble de données.
Dans le champ ID de l'ensemble de données, saisissez
quickstart_data_profile.Dans la liste Emplacement des données, sélectionnez us-central1 (Iowa).
Cliquez sur Créer un ensemble de données.
Dans l'éditeur de requête, saisissez la requête SQL suivante pour générer des exemples de données de vélos en libre-service dans votre table
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;
Remplacez
PROJECT_IDpar l'ID du projet Google Cloud .Cliquez sur Exécuter.
gcloud
Dans Cloud Shell, créez l'ensemble de données
quickstart_data_profiledans la régionus-central1:bq --location=us-central1 mk --dataset PROJECT_ID:quickstart_data_profile
Remplacez
PROJECT_IDpar l'ID de votre projetGoogle Cloud .Créez et remplissez l'exemple de table
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;"
Créer et exécuter une analyse de profilage des données
Une analyse de profilage des données examine les lignes de votre table pour calculer des insights statistiques, y compris le nombre de valeurs uniques, les ratios de valeurs nulles et les plages de distribution des données.
Console
Dans la console Google Cloud , accédez à la page Qualité et profilage des données.
Cliquez sur Créer une analyse de profilage de données.
Sous Choisir un type, laissez l'option Analyse de profilage des données sélectionnée.
Sous Général, dans le champ Nom à afficher, saisissez
bikeshare-trips-profile.Sous Table à analyser, dans le champ Table, cliquez sur Parcourir, sélectionnez la table
quickstart_data_profile.bikeshare_tripsdans votre projet, puis cliquez sur Sélectionner.Dans le champ Mode, sélectionnez Standard.
Pour Champ d'application, sélectionnez Intégralité des données.
Pour Planification, sélectionnez À la demande.
Conservez les valeurs par défaut des autres paramètres.
Cliquez sur Effectuer une analyse.
Le job d'analyse démarre. Il faut généralement trois à cinq minutes à Knowledge Catalog pour analyser et calculer les statistiques de votre table.
gcloud
Dans Cloud Shell, créez l'analyse de profilage des données :
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"
Remplacez
PROJECT_IDpar l'ID de votre projetGoogle Cloud .Exécutez l'analyse de profilage des données :
gcloud dataplex datascans run bikeshare-trips-profile \ --location=us-central1
Le job d'analyse démarre en arrière-plan. L'analyse prend généralement trois à cinq minutes.
Examiner les résultats d'analyse de profilage des données
Une fois l'analyse terminée, examinez les statistiques de colonne pour comprendre les caractéristiques de vos données.
Dans la console Google Cloud , accédez à la page Qualité et profilage des données.
Dans la liste des analyses, cliquez sur bikeshare-trips-profile.
Si l'analyse n'a pas encore été exécutée, cliquez sur Exécuter maintenant.
Dans la section Vue d'ensemble, attendez que le dernier job d'analyse affiche l'état Réussi.
L'image suivante montre le job d'analyse dans la section Vue d'ensemble avec l'état Réussi :
Inspectez les résultats de l'analyse pour comprendre la distribution des données de votre table et identifier les cibles potentielles de validation de la qualité des données. Dans l'onglet Résultats du dernier job, Knowledge Catalog affiche des métriques au niveau des colonnes, y compris %de valeurs nulles, Nombre et %de valeurs uniques, Principales valeurs et Résumé des statistiques.
Le tableau suivant indique la métrique de profil à vérifier pour chaque colonne de la table, comment interpréter les résultats et quelle règle de qualité des données cibler :
Colonne "Table" Métrique de résultat de profilage Ce qu'il faut rechercher et comment l'interpréter Cible de validation de la qualité des données duration_minutesRécapitulatif des statistiques Valeurs négatives détectées : la valeur Min est de -10.0minutes. La durée écoulée du trajet ne peut pas être négative, ce qui indique des enregistrements de capteur ou de trajet non valides.Ciblez avec une règle de validité (plage) (telle que duration_minutes ≥ 1.0) pour exiger des temps de trajet écoulés positifs.start_station_id%de valeurs nulles Environ 5% de valeurs nulles : le pourcentage de valeurs nulles est supérieur à 0%, ce qui indique que certains enregistrements ne comportent pas d'identifiants de station de départ (par exemple, les trajets sans station ou sans borne). Ciblez avec une règle d'exhaustivité (non nulle) pour détecter et signaler les enregistrements dont l'ID de station est manquant. subscriber_typeValeurs principales Catégories inattendues : la liste des valeurs fréquentes contient des catégories non standards (comme INVALID_TIER) en plus des niveaux d'abonnement valides, ce qui indique des problèmes de saisie ou d'ingestion de données utilisateur non validées.Ciblez avec une règle de validité (ensemble) pour vous assurer que toutes les valeurs entrantes appartiennent à votre liste de types d'abonnement autorisés. trip_idNombre unique et % ID en double détectés : l'unicité est inférieure à 100% (environ 98%), ce qui indique des enregistrements d'identifiants répétés. Les clés primaires et les identifiants de trajet doivent être uniques à 100 %. Ciblez avec une règle d'unicité pour signaler et empêcher les enregistrements de trajets en double.
Ces résultats de profil vous fournissent une référence factuelle pour créer des règles de qualité des données ciblées.
Créer et exécuter une analyse de la qualité des données
Maintenant que vous avez découvert à quoi ressemblent les données, configurez des règles de qualité des données automatisées pour détecter les anomalies. Dans cette étape, vous allez configurer quatre types de règles courants en fonction des résultats de votre profil.
Console
Dans la console Google Cloud , accédez à la page Qualité et profilage des données.
Cliquez sur Créer une analyse de la qualité des données.
Sous Général, dans le champ Nom à afficher, saisissez
bikeshare-trips-quality.Sous Table à analyser, dans le champ Table, cliquez sur Parcourir, sélectionnez la table
quickstart_data_profile.bikeshare_trips, puis cliquez sur Sélectionner.Pour Champ d'application, sélectionnez Intégralité des données.
Pour Planification, sélectionnez À la demande.
Conservez les autres paramètres par défaut, puis cliquez sur Continuer.
Dans la section Règles sur la qualité des données, cliquez sur Ajouter des règles, puis sélectionnez Types de règles intégrés.
Dans le panneau Ajouter des règles, sélectionnez les colonnes et les types de règles :
- Dans le champ Choisir des colonnes, cliquez sur Parcourir, puis sélectionnez
duration_minutes,start_station_id,subscriber_typeettrip_id. - Cliquez sur Sélectionner.
- Dans la liste Choisir les types de règles, sélectionnez Vérification de la plage, Vérification de la valeur NULL, Vérification de l'ensemble de valeurs et Vérification de l'unicité, puis cliquez sur OK.
Dans la liste des règles générées, cochez la case correspondant à chacune des règles suivantes :
duration_minutes: Vérification de la plagestart_station_id: Vérification NULLsubscriber_type: Vérification de l'ensemble de valeurstrip_id: Vérification de l'originalité
Cliquez sur Sélectionner.
- Dans le champ Choisir des colonnes, cliquez sur Parcourir, puis sélectionnez
Dans le tableau Règles sur la qualité des données, configurez les paramètres des règles qui nécessitent des valeurs :
- Pour
duration_minutes(Vérification de la plage), cliquez sur Modifier, saisissez1.0dans le champ Valeur minimale, puis cliquez sur Enregistrer. - Pour
subscriber_type(Vérification de l'ensemble de valeurs), cliquez sur Modifier, cliquez sur Ajouter une valeur pour ajouter chacune des valeurs autorisées (Local Rider,Walk Up,Student MembershipetWeekender), puis cliquez sur Enregistrer.
- Pour
Cliquez sur Continuer, puis sur Effectuer une analyse.
gcloud
Dans Cloud Shell, créez un fichier nommé
dq_bikeshare.yamlavec des spécifications de règles qui ciblent les anomalies détectées dans votre profil :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" EOFCréez l'analyse de la qualité des données :
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"
Remplacez
PROJECT_IDpar l'ID de votre projetGoogle Cloud .Exécutez l'analyse de la qualité des données :
gcloud dataplex datascans run bikeshare-trips-quality \ --location=us-central1
Examiner les évaluations des règles de qualité des données
Vérifiez les résultats de la qualité des données pour voir comment vos règles ont évalué les données échantillonnées et identifié les anomalies.
Dans la console Google Cloud , accédez à la page Qualité et profilage des données.
Dans la table Analyses, cliquez sur l'analyse bikeshare-trips-quality.
Dans la section Vue d'ensemble, cliquez sur Afficher les résultats pour ouvrir les détails du job.
Dans le panneau Détails du job, examinez les résultats de l'évaluation :
État de la qualité des données : comme prévu, les trois dimensions évaluées affichent l'état Échec.
- Validité : Échec. La colonne
duration_minutescontient des valeurs négatives etsubscriber_typecontient des valeurs d'appartenance non valides (INVALID_TIER). - Exhaustivité : Échec. La colonne
start_station_idcontient des valeurs nulles. - Unicité : Échec. La colonne
trip_idcontient des enregistrements en double.
- Validité : Échec. La colonne
Règles : dans le tableau Règles, les quatre règles évaluées affichent l'état Échec.
duration_minutes: Vérification de la plage (Échec)start_station_id: Contrôle des valeurs NULL (Échec)subscriber_type: Vérification de l'ensemble de valeurs (Échec)trip_id: Vérification de l'originalité (Échec)
Pour toute règle ayant échoué, vous pouvez copier la requête SQL dans la colonne Requête pour obtenir les enregistrements ayant échoué et l'exécuter dans BigQuery pour isoler et inspecter les lignes non valides.
Vous avez maintenant profilé une table BigQuery pour découvrir les statistiques des colonnes et utilisé ces insights pour définir et valider des règles automatisées de qualité des données.
Effectuer un nettoyage
Pour éviter que les ressources utilisées dans cette démonstration soient facturées sur votre compte Google Cloud , procédez comme suit :
Console
Dans la console Google Cloud , accédez à la page Qualité et profilage des données.
Dans la table Analyses, sélectionnez bikeshare-trips-quality et bikeshare-trips-profile.
Cliquez sur Supprimer, puis confirmez la suppression.
Accédez à la page BigQuery.
Dans le volet Explorateur, cliquez sur Ensembles de données.
Sélectionnez l'ensemble de données
quickstart_data_profile, puis cliquez sur Supprimer.
gcloud
Dans Cloud Shell, supprimez l'analyse de la qualité des données, l'analyse de profilage des données et l'exemple d'ensemble de données :
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
Remplacez PROJECT_ID par l'ID de votre projetGoogle Cloud .
Étapes suivantes
- Afficher et résoudre les problèmes liés aux résultats d'analyse de la qualité des données
- Surveiller les métriques Knowledge Catalog
- Créer un workflow de qualité des données Policy-as-Code à l'aide de la CLI Antigravity
- Gérer les règles de qualité des données en tant que code avec Terraform
- Réutiliser des règles de qualité des données dans plusieurs tables
- Découvrir d'autres cas d'utilisation de Knowledge Catalog