Profiler et valider la qualité des données
Ce guide de démarrage rapide vous explique comment utiliser Knowledge Catalog (anciennement Dataplex Universal Catalog) pour profiler une table BigQuery, définir des règles de qualité des données en fonction des insights de profil et exécuter une analyse de la qualité des données.
Voici les étapes à suivre :
- Créez un ensemble de données et une table BigQuery avec des exemples de données de vélos en libre-service contenant des anomalies intentionnelles, telles que des doublons et des valeurs nulles, pour tester les capacités d'analyse.
- Créez et exécutez une analyse de profilage des données sur la table. Le profilage des données calcule des statistiques au niveau des colonnes, telles que les pourcentages de valeurs nulles, le nombre de valeurs uniques et les distributions de valeurs. Pour en savoir plus, consultez À propos du profilage de données.
- Examinez les résultats de l'analyse du profil de données pour identifier des tendances et des anomalies potentielles.
- Définissez des règles de qualité des données en fonction des résultats de votre profil, puis exécutez une analyse de la qualité des données. Les analyses de la qualité des données valident vos données par rapport à des règles définies pour identifier les anomalies. Pour en savoir plus, consultez À propos de la qualité des données automatique.
- Examinez les résultats de l'évaluation pour voir quelles règles de qualité ont été respectées ou non.
Avant de commencer
Configurez votre projet :
-
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.
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 de données et de qualité des données, et pour 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 tables exemples : Propriétaire de données BigQuery (
roles/bigquery.dataOwner) -
Exécuter des requêtes SQL dans BigQuery :
Utilisateur de tâche 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 possède déjà 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.Notez la valeur
PROJECT_NUMBERdans le résultat pour les étapes suivantes.Attribuez le rôle Utilisateur de job BigQuery (
roles/bigquery.jobUser) afin que le catalogue de connaissances puisse exécuter des requêtes dans votre projet :gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex." \ --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) afin 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." \ --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 directement dans votre projet.
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 du 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 profil de données examine les lignes de votre tableau 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 le type, laissez l'option Analyse du profil de 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 Programmation, sélectionnez À la demande.
Conservez les valeurs par défaut des autres paramètres.
Cliquez sur Effectuer une analyse.
La tâche d'analyse démarre. Le Knowledge Catalog met généralement entre trois et cinq minutes pour exécuter l'analyse et calculer les statistiques de votre tableau.
gcloud
Dans Cloud Shell, créez l'analyse de profilage de 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 du projetGoogle Cloud .Exécutez l'analyse du profil de données :
gcloud dataplex datascans run bikeshare-trips-profile \ --location=us-central1
La tâche d'analyse démarre en arrière-plan. L'analyse prend généralement entre trois et cinq minutes.
Examiner les résultats de l'analyse de profilage de données
Une fois l'analyse terminée, examinez les statistiques des colonnes 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 Présentation, 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éussie :
Examinez les résultats de l'analyse pour comprendre la distribution des données de votre tableau et identifier les cibles de validation potentielles de la qualité des données. Dans l'onglet Derniers résultats du job, Knowledge Catalog affiche des métriques au niveau des colonnes, y compris %de valeurs nulles, Nombre et %de valeurs uniques, Valeurs les plus fréquentes et Statistiques récapitulatives.
Le tableau suivant indique la métrique de profil à vérifier pour chaque colonne de tableau, comment interpréter les résultats et la règle de qualité des données à cibler :
Colonne "Table" Métrique de résultat de profil Éléments à rechercher et comment les interpréter Cible de validation de la qualité des données duration_minutesStatistiques récapitulatives Valeurs négatives détectées : la valeur Min est de -10.0minutes. La durée du trajet écoulée ne peut pas être négative, ce qui indique que les enregistrements du capteur ou du trajet ne sont pas valides.Ciblez avec une règle Validité (plage) (telle que duration_minutes ≥ 1.0) pour exiger des durées de trajet écoulées positives.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 sortie de station (comme les trajets sans borne ou sans kiosque). Ciblez les enregistrements avec une règle Exhaustivité (non nul) pour identifier et signaler les enregistrements dont l'ID de station est manquant. subscriber_typeValeurs les plus élevées Catégories inattendues : la liste des valeurs fréquentes contient des catégories non standards (telles que INVALID_TIER) à côté des niveaux d'abonnement valides, ce qui indique des problèmes de validation de l'entrée utilisateur ou d'ingestion.Ciblez avec une règle Validité (ensemble) pour vous assurer que toutes les valeurs entrantes appartiennent à votre liste autorisée de types de membres. 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 100% uniques. Ciblez les enregistrements de trajets en double à l'aide d'une règle d'unicité pour les signaler et les empêcher.
Ces résultats de profil vous fournissent une base 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 automatiques de qualité des donné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 Programmation, 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 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ée, cochez la case de 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 min., puis cliquez sur Enregistrer. - Pour
subscriber_type(Vérification de l'ensemble de valeurs), cliquez sur Modifier, puis sur Ajouter une valeur pour ajouter chacune des valeurs autorisées (Local Rider,Walk Up,Student MembershipetWeekender), et cliquez sur Enregistrer.
- Pour
Cliquez sur Continuer, puis sur Effectuer une analyse.
gcloud
Dans Cloud Shell, créez un fichier nommé
dq_bikeshare.yamlcontenant les spécifications des règles ciblant 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 du 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
Consultez les résultats de la qualité des données pour voir comment vos règles ont évalué les données d'échantillon et identifié les anomalies.
Dans la console Google Cloud , accédez à la page Qualité et profilage des données.
Dans le tableau Scans, cliquez sur l'analyse bikeshare-trips-quality.
Dans la section Présentation, cliquez sur Afficher les résultats pour ouvrir les détails du job.
Dans le panneau Informations sur le 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. - Originalité : É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 de qualité des données automatisé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 le tableau 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 du profil de 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 du projetGoogle Cloud .
Étapes suivantes
- Afficher les résultats de l'analyse de la qualité des données et résoudre les problèmes
- Surveiller les analyses de données et configurer des alertes
- Créer un workflow de qualité des données "policy-as-code" à l'aide de l'interface de ligne de commande 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