Profilare e convalidare la qualità dei dati

Questa guida rapida mostra come utilizzare Knowledge Catalog (in precedenza Dataplex Universal Catalog) per profilare una tabella BigQuery, definire regole di qualità dei dati in base agli approfondimenti del profilo ed eseguire una scansione della qualità dei dati.

Completa i seguenti passaggi:

  1. Crea un set di dati e una tabella BigQuery con dati di esempio di bike sharing che contengono anomalie intenzionali, come duplicati e valori nulli, per testare le funzionalità di scansione.
  2. Crea ed esegui una scansione di profilazione dei dati sulla tabella. Il profiling dei dati calcola statistiche a livello di colonna, ad esempio percentuali di valori null, conteggi di valori univoci e distribuzioni dei valori. Per ulteriori informazioni, consulta la sezione Informazioni sulla profilazione dei dati.
  3. Esamina i risultati della scansione del profilo di dati per trovare pattern e potenziali anomalie.
  4. Definisci regole per la qualità dei dati in base ai risultati del profilo ed esegui una scansione della qualità dei dati. Le scansioni della qualità dei dati convalidano i dati in base a regole definite per identificare le anomalie. Per saperne di più, consulta Informazioni sulla qualità dei dati automatica.
  5. Esamina i risultati della valutazione per vedere quali regole di qualità sono state superate o meno.

Prima di iniziare

Configura il progetto:

  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

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare ed eseguire scansioni del profilo dei dati e della qualità dei dati e gestire le risorse BigQuery, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Se disponi delle autorizzazioni necessarie per gestire l'accesso IAM nel tuo progetto, puoi concedere questi ruoli al tuo account utente eseguendo i seguenti comandi gcloud:

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"

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto Google Cloud .
  • USER_EMAIL: l'indirizzo email dell'account utente (ad esempio name@example.com).

Concedi le autorizzazioni al service agent Knowledge Catalog

Un agente di servizio è un service account gestito da Google che Knowledge Catalog utilizza per eseguire query di scansione in BigQuery per tuo conto.

  1. Nella console Google Cloud , fai clic su Attiva Cloud Shell nella barra degli strumenti. Bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente.

  2. Crea l'agente di servizio Knowledge Catalog:

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

    Questo comando crea il service agent se non è ancora stato eseguito il provisioning e restituisce il suo indirizzo email. Se il progetto ha già un service agent Knowledge Catalog, il comando restituisce l'identità esistente senza apportare modifiche.

    L'output è simile al seguente:

    serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.
    

    Prendi nota del PROJECT_NUMBER nell'output per i passaggi successivi.

  3. Concedi il ruolo BigQuery Job User (roles/bigquery.jobUser) in modo che Knowledge Catalog possa eseguire job di query nel tuo progetto:

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex." \
       --role="roles/bigquery.jobUser"
    

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • PROJECT_NUMBER: il tuo Google Cloud numero di progetto.
  4. Concedi il ruolo Visualizzatore dati BigQuery (roles/bigquery.dataViewer) in modo che l'agente di servizio possa leggere i dati e lo schema della tabella:

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex." \
       --role="roles/bigquery.dataViewer"
    

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • PROJECT_NUMBER: il tuo Google Cloud numero di progetto.

Crea un set di dati e una tabella di esempio

Per provare le scansioni di profilazione e qualità dei dati in modo sicuro senza toccare i dati di produzione, configura un set di dati BigQuery dedicato e crea una tabella contenente dati di esempio direttamente nel tuo progetto.

Console

  1. Nella console Google Cloud , vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro Explorer, fai clic su Visualizza azioni accanto al tuo ID progetto, quindi fai clic su Crea set di dati.

  3. Nel campo Dataset ID (ID set di dati), inserisci quickstart_data_profile.

  4. Nell'elenco Posizione dei dati, seleziona us-central1 (Iowa).

  5. Fai clic su Crea set di dati.

  6. Nell'editor di query, inserisci la seguente query SQL per generare dati di bike sharing di esempio nella tabella 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;

    Sostituisci PROJECT_ID con l'ID progetto Google Cloud .

  7. Fai clic su Esegui.

gcloud

  1. In Cloud Shell, crea il set di dati quickstart_data_profile nella regione us-central1:

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

    Sostituisci PROJECT_ID con l'ID progettoGoogle Cloud .

  2. Crea e compila la tabella di esempio 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;"
    

Crea ed esegui una scansione del profilo di dati

Una scansione del profilo di dati esamina le righe della tabella per calcolare approfondimenti statistici, tra cui conteggi di valori unici, rapporti null e intervalli di distribuzione dei dati.

Console

  1. Nella console Google Cloud , vai alla pagina Profilazione e qualità dei dati.

    Vai a Profilazione e qualità dei dati

  2. Fai clic su Crea scansione di profilazione dei dati.

  3. In Scegli tipo, lascia selezionata l'opzione Scansione di profilazione dei dati.

  4. Nella sezione Generale, nel campo Nome visualizzato, inserisci bikeshare-trips-profile.

  5. In Tabella da scansionare, nel campo Tabella, fai clic su Sfoglia, seleziona la tabella quickstart_data_profile.bikeshare_trips nel progetto e poi fai clic su Seleziona.

  6. Per Modalità, seleziona Standard.

  7. In Ambito, seleziona Tutti i dati.

  8. Per Programmazione, seleziona On demand.

  9. Lascia invariate le altre impostazioni predefinite.

  10. Fai clic su Esegui scansione.

    Viene avviato il job di scansione. In genere, Knowledge Catalog impiega 3-5 minuti per eseguire la scansione e calcolare le statistiche per la tabella.

gcloud

  1. In Cloud Shell, crea la scansione del profilo di dati:

    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"
    

    Sostituisci PROJECT_ID con l'ID progettoGoogle Cloud .

  2. Esegui la scansione del profilo di dati:

    gcloud dataplex datascans run bikeshare-trips-profile \
     --location=us-central1
    

    Il job di scansione viene avviato in background. In genere, la scansione richiede 3-5 minuti.

Esaminare i risultati della scansione del profilo di dati

Al termine della scansione, esamina le statistiche delle colonne per comprendere le caratteristiche dei dati.

  1. Nella console Google Cloud , vai alla pagina Profilazione e qualità dei dati.

    Vai a Profilazione e qualità dei dati

  2. Nell'elenco delle scansioni, fai clic su bikeshare-trips-profile.

  3. Se la scansione non è ancora stata eseguita, fai clic su Esegui ora.

  4. Nella sezione Panoramica, attendi che l'ultimo job di scansione mostri Riuscito.

    L'immagine seguente mostra il job di scansione nella sezione Panoramica con lo stato Riuscito:

    Sezione Panoramica della scansione di profilazione degli spostamenti in bike sharing che mostra lo stato del job come riuscito e il link Visualizza risultati.

  5. Esamina i risultati dell'analisi per comprendere la distribuzione dei dati della tabella e identificare i potenziali target di convalida della qualità dei dati. Nella scheda Risultati dell'ultimo job, Knowledge Catalog mostra le metriche a livello di colonna, tra cui %di valori nulli, Conteggio e %di valori unici, Valori principali e Statistiche riepilogative.

    La tabella seguente mostra quale metrica del profilo controllare per ogni colonna della tabella, come interpretare i risultati e quale regola di qualità dei dati scegliere come target:

    Colonna Tabella Metrica dei risultati del profilo Cosa cercare e come interpretare Target di convalida della qualità dei dati
    duration_minutes Statistiche riepilogative Rilevati valori negativi: il valore Min è -10.0 minuti. La durata del viaggio non può essere negativa, il che indica registrazioni del sensore o della corsa non valide. Target con una regola Validità (intervallo) (ad esempio duration_minutes ≥ 1.0) per richiedere tempi di corsa positivi.
    start_station_id %nullo Circa il 5% di valori nulli: la percentuale di valori nulli è superiore allo 0%, il che indica che alcuni record non hanno identificatori di check-out della stazione (ad esempio viaggi senza aggancio o senza chiosco). Target con una regola Completezza (non null) per rilevare e segnalare i record con ID stazione mancanti.
    subscriber_type Valori principali Categorie impreviste: elenco dei valori frequenti categorie non standard (ad esempio INVALID_TIER) insieme a livelli di abbonamento validi, che indicano problemi di inserimento o importazione di dati utente non convalidati. Definisci come target una regola Validità (insieme) per imporre che tutti i valori in entrata appartengano all'elenco consentito di tipi di abbonamento.
    trip_id Conteggio unico e % Rilevati ID duplicati: l'unicità è inferiore al 100% (circa il 98%), il che indica record di identificatori ripetuti. Le chiavi primarie e gli identificatori di viaggio devono essere univoci al 100%. Target con una regola di Unicità per segnalare e impedire la duplicazione dei record di viaggio.

Questi risultati del profilo forniscono una base basata su prove per creare regole di qualità dei dati mirate.

Crea ed esegui una scansione della qualità dei dati

Ora che hai scoperto l'aspetto dei dati, configura regole automatizzate per la qualità dei dati per rilevare le anomalie. In questo passaggio, configuri quattro tipi di regole comuni in base ai risultati del tuo profilo.

Console

  1. Nella console Google Cloud , vai alla pagina Profilazione e qualità dei dati.

    Vai a Profilazione e qualità dei dati

  2. Fai clic su Crea scansione della qualità dei dati.

  3. Nella sezione Generale, nel campo Nome visualizzato, inserisci bikeshare-trips-quality.

  4. In Tabella da scansionare, nel campo Tabella, fai clic su Sfoglia, seleziona la tabella quickstart_data_profile.bikeshare_trips e poi fai clic su Seleziona.

  5. In Ambito, seleziona Tutti i dati.

  6. Per Programmazione, seleziona On demand.

  7. Lascia invariate le altre impostazioni predefinite e fai clic su Continua.

  8. Nella sezione Regole di qualità dei dati, fai clic su Aggiungi regole e seleziona Tipi di regole integrate.

  9. Nel riquadro Aggiungi regole, seleziona le colonne e i tipi di regole:

    • Nel campo Scegli colonne, fai clic su Sfoglia e seleziona duration_minutes, start_station_id, subscriber_type e trip_id.
    • Fai clic su Seleziona.
    • Nell'elenco Scegli tipi di regole, seleziona Controllo intervallo, Controllo NULL, Controllo insieme di valori e Controllo univocità, quindi fai clic su Ok.
    • Nell'elenco delle regole generate, seleziona la casella di controllo per ciascuna delle seguenti regole:

      • duration_minutes: Controllo intervallo
      • start_station_id: Controllo NULL
      • subscriber_type: Controllo del set di valori
      • trip_id: Controllo di unicità
    • Fai clic su Seleziona.

  10. Nella tabella Regole per la qualità dei dati, configura i parametri per le regole che richiedono valori:

    • Per duration_minutes (Controllo intervallo), fai clic su Modifica, inserisci 1.0 nel campo Valore minimo e fai clic su Salva.
    • Per subscriber_type (Controllo del set di valori), fai clic su Modifica, fai clic su Aggiungi valore per aggiungere ciascuno dei valori consentiti (Local Rider, Walk Up, Student Membership e Weekender) e fai clic su Salva.
  11. Fai clic su Continua e poi su Esegui scansione.

gcloud

  1. In Cloud Shell, crea un file denominato dq_bikeshare.yaml con le specifiche delle regole che hanno come target le anomalie trovate nel tuo profilo:

    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. Crea l'analisi della qualità dei dati:

    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"
    

    Sostituisci PROJECT_ID con l'ID progettoGoogle Cloud .

  3. Esegui la scansione della qualità dei dati:

    gcloud dataplex datascans run bikeshare-trips-quality \
     --location=us-central1
    

Esaminare le valutazioni delle regole sulla qualità dei dati

Controlla i risultati della qualità dei dati per vedere come le regole hanno valutato i dati di esempio e identificato le anomalie.

  1. Nella console Google Cloud , vai alla pagina Profilazione e qualità dei dati.

    Vai a Profilazione e qualità dei dati

  2. Nella tabella Scansioni, fai clic sulla scansione bikeshare-trips-quality.

  3. Nella sezione Panoramica, fai clic su Visualizza risultati per aprire i dettagli del job.

  4. Nel riquadro Dettagli job, esamina i risultati della valutazione:

    • Stato della qualità dei dati: come previsto, tutte e tre le dimensioni valutate mostrano lo stato Non riuscito.

      • Validità: Non riuscita. La colonna duration_minutes contiene valori negativi e subscriber_type contiene valori di abbonamento non validi (INVALID_TIER).
      • Completezza: Non riuscita. La colonna start_station_id contiene valori nulli.
      • Unicità: Non riuscita. La colonna trip_id contiene record duplicati.
    • Regole: nella tabella Regole, tutte e quattro le regole valutate mostrano lo stato Non riuscito.

      • duration_minutes: Controllo intervallo (non riuscito)
      • start_station_id: controllo NULL (non riuscito)
      • subscriber_type: Controllo del set di valori (non riuscito)
      • trip_id: Controllo unicità (non riuscito)

      Per ogni regola non riuscita, puoi copiare la query SQL nella colonna Query per ottenere i record non riusciti ed eseguirla in BigQuery per isolare ed esaminare le righe non valide.

Ora hai profilato una tabella BigQuery per scoprire le statistiche delle colonne e hai utilizzato questi approfondimenti per definire e convalidare le regole automatizzate di qualità dei dati.

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, segui questi passaggi.

Console

  1. Nella console Google Cloud , vai alla pagina Profilazione e qualità dei dati.

    Vai a Profilazione e qualità dei dati

  2. Nella tabella Scansioni, seleziona bikeshare-trips-quality e bikeshare-trips-profile.

  3. Fai clic su Elimina e conferma.

  4. Vai alla pagina BigQuery.

    Vai a BigQuery

  5. Nel riquadro Explorer, fai clic su Set di dati.

  6. Seleziona il set di dati quickstart_data_profile, quindi fai clic su Elimina.

gcloud

In Cloud Shell, elimina la scansione della qualità dei dati, la scansione del profilo dati e il set di dati di esempio:

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

Sostituisci PROJECT_ID con l'ID progettoGoogle Cloud .

Passaggi successivi