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 :

  1. 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.
  2. 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.
  3. Examinez les résultats de l'analyse du profil de données pour identifier des tendances et des anomalies potentielles.
  4. 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.
  5. 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 :

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

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

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

  4. Enable the Knowledge Catalog and BigQuery APIs.

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

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 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_NUMBER dans le résultat pour les étapes suivantes.

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

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

  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 le type, laissez l'option Analyse du profil de 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 Programmation, sélectionnez À la demande.

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

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

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

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

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

    Section "Vue d'ensemble" de l'analyse du profil des trajets en vélos en libre-service montrant l'état du job comme réussi et le lien "Afficher les résultats".

  5. 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_minutes Statistiques récapitulatives Valeurs négatives détectées : la valeur Min est de -10.0 minutes. 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_type Valeurs 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_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 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

  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 Programmation, 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 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 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 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 Membership et Weekender), et 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 contenant 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"
    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 du 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

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.

  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 le tableau Scans, cliquez sur l'analyse bikeshare-trips-quality.

  3. Dans la section Présentation, cliquez sur Afficher les résultats pour ouvrir les détails du job.

  4. 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_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.
      • Originalité : É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 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

  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 le tableau 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 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