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 :

  1. 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.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

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

  4. Verify that billing is enabled for your Google Cloud project.

  5. 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.enable permission. 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.

    Enable the APIs

  6. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

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

  8. Verify that billing is enabled for your Google Cloud project.

  9. 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.enable permission. 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.

    Enable the APIs

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 :

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.

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

  2. Créez l'agent de service Knowledge Catalog :

    gcloud beta services identity create --service=dataplex.googleapis.com
    

    Cette 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.com
    

    Notez l'élément PROJECT_NUMBER dans le résultat pour les étapes suivantes.

  3. 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 .
  4. 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

  1. Dans la console Google Cloud , accédez à la page BigQuery.

    Accéder à BigQuery

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

  3. Dans le champ ID de l'ensemble de données, saisissez quickstart_data_profile.

  4. Dans la liste Emplacement des données, sélectionnez us-central1 (Iowa).

  5. Cliquez sur Créer un ensemble de données.

  6. 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_ID par l'ID du projet Google Cloud .

  7. Cliquez sur Exécuter.

gcloud

  1. Dans Cloud Shell, créez l'ensemble de données quickstart_data_profile dans la région us-central1 :

    bq --location=us-central1 mk --dataset PROJECT_ID:quickstart_data_profile
    

    Remplacez PROJECT_ID par l'ID de votre projetGoogle Cloud .

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

  1. Dans la console Google Cloud , accédez à la page Qualité et profilage des données.

    Accéder à la page "Qualité et profilage des données"

  2. Cliquez sur Créer une analyse de profilage de données.

  3. Sous Choisir un type, laissez l'option Analyse de profilage des données sélectionnée.

  4. Sous Général, dans le champ Nom à afficher, saisissez bikeshare-trips-profile.

  5. Sous Table à analyser, dans le champ Table, cliquez sur Parcourir, sélectionnez la table quickstart_data_profile.bikeshare_trips dans votre projet, puis cliquez sur Sélectionner.

  6. Dans le champ Mode, sélectionnez Standard.

  7. Pour Champ d'application, sélectionnez Intégralité des données.

  8. Pour Planification, sélectionnez À la demande.

  9. Conservez les valeurs par défaut des autres paramètres.

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

  1. 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_ID par l'ID de votre projetGoogle Cloud .

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

  1. Dans la console Google Cloud , accédez à la page Qualité et profilage des données.

    Accéder à la page "Qualité et profilage des données"

  2. Dans la liste des analyses, cliquez sur bikeshare-trips-profile.

  3. Si l'analyse n'a pas encore été exécutée, cliquez sur Exécuter maintenant.

  4. 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 :

    Section "Vue d'ensemble" de l'analyse de profilage des trajets en vélo en libre-service, indiquant l'état du job "Réussi" et le lien "Afficher les résultats".

  5. 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_minutes Récapitulatif des statistiques Valeurs négatives détectées : la valeur Min est de -10.0 minutes. 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_type Valeurs 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_id Nombre 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

  1. Dans la console Google Cloud , accédez à la page Qualité et profilage des données.

    Accéder à la page "Qualité et profilage des données"

  2. Cliquez sur Créer une analyse de la qualité des données.

  3. Sous Général, dans le champ Nom à afficher, saisissez bikeshare-trips-quality.

  4. Sous Table à analyser, dans le champ Table, cliquez sur Parcourir, sélectionnez la table quickstart_data_profile.bikeshare_trips, puis cliquez sur Sélectionner.

  5. Pour Champ d'application, sélectionnez Intégralité des données.

  6. Pour Planification, sélectionnez À la demande.

  7. Conservez les autres paramètres par défaut, puis cliquez sur Continuer.

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

  9. 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_type et trip_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 plage
      • start_station_id : Vérification NULL
      • subscriber_type : Vérification de l'ensemble de valeurs
      • trip_id : Vérification de l'originalité
    • Cliquez sur Sélectionner.

  10. 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, saisissez 1.0 dans 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 Membership et Weekender), puis cliquez sur Enregistrer.
  11. Cliquez sur Continuer, puis sur Effectuer une analyse.

gcloud

  1. Dans Cloud Shell, créez un fichier nommé dq_bikeshare.yaml avec 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"
    EOF
    
  2. Cré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_ID par l'ID de votre projetGoogle Cloud .

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

  1. Dans la console Google Cloud , accédez à la page Qualité et profilage des données.

    Accéder à la page "Qualité et profilage des données"

  2. Dans la table Analyses, cliquez sur l'analyse bikeshare-trips-quality.

  3. Dans la section Vue d'ensemble, cliquez sur Afficher les résultats pour ouvrir les détails du job.

  4. 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_minutes contient des valeurs négatives et subscriber_type contient des valeurs d'appartenance non valides (INVALID_TIER).
      • Exhaustivité : Échec. La colonne start_station_id contient des valeurs nulles.
      • Unicité : Échec. La colonne trip_id contient des enregistrements en double.
    • 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

  1. Dans la console Google Cloud , accédez à la page Qualité et profilage des données.

    Accéder à la page "Qualité et profilage des données"

  2. Dans la table Analyses, sélectionnez bikeshare-trips-quality et bikeshare-trips-profile.

  3. Cliquez sur Supprimer, puis confirmez la suppression.

  4. Accédez à la page BigQuery.

    Accéder à BigQuery

  5. Dans le volet Explorateur, cliquez sur Ensembles de données.

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