Profila e convalida la qualità dei dati

Knowledge Catalog (in precedenza Dataplex Universal Catalog) consente di profilare le tabelle BigQuery per calcolare statistiche a livello di colonna, come percentuali di valori nulli, conteggi di valori univoci e distribuzioni di valori. Puoi quindi utilizzare questi insight per definire regole di qualità dei dati e convalidare i record per rilevare eventuali anomalie.

In questa guida rapida, compili una tabella BigQuery di esempio con anomalie intenzionali, esegui una scansione di profilazione dei dati e valuti i risultati con una scansione della qualità dei dati. Per saperne di più, consulta Informazioni sulla profilazione dei dati e Informazioni sulla qualità dei dati automatica.

Prima di iniziare

Configura il progetto:

  1. Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
  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

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare ed eseguire scansioni del profilo di 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 del tuo account utente (ad esempio name@example.com).

Concedi le autorizzazioni all'agente di servizio 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 l'agente di servizio se non è stato ancora eseguito il provisioning e restituisce la sua email. Se il tuo progetto ha già un agente di servizio Knowledge Catalog, il comando restituisce l'identità esistente senza apportare modifiche.

    L'output è simile al seguente:

    serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com
    

    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.iam.gserviceaccount.com" \
       --role="roles/bigquery.jobUser"
    

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • PROJECT_NUMBER: il tuo numero di progetto Google Cloud .
  4. Concedi il ruolo BigQuery Data Viewer (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.iam.gserviceaccount.com" \
       --role="roles/bigquery.dataViewer"
    

    Sostituisci quanto segue:

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

Crea un set di dati e una tabella di esempio

Per provare in sicurezza la profilazione e le scansioni della qualità dei dati senza toccare i dati di produzione, configura un set di dati BigQuery dedicato e crea una tabella contenente dati di esempio di bike sharing con anomalie intenzionali, come duplicati e valori nulli.

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 su Crea set di dati.

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

  4. Nell'elenco Località 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 esempio sul bike sharing 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 di profilazione dei dati

Una scansione di profilazione dei dati esamina le righe della tabella per calcolare insight statistici, tra cui conteggi di valori univoci, rapporti di valori nulli 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. In Generali, 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. In Modalità, seleziona Standard.

  7. In Ambito, seleziona Tutti i dati.

  8. In Pianificazione, seleziona On demand.

  9. Non modificare le altre impostazioni predefinite.

  10. Fai clic su Esegui scansione.

    Il job di scansione viene avviato. In genere, Knowledge Catalog impiega dai 3 ai 5 minuti per eseguire la scansione e calcolare le statistiche per la tabella.

gcloud

  1. In Cloud Shell, crea la scansione di profilazione dei 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 di profilazione dei dati:

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

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

Esamina i risultati della scansione di profilazione dei 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 del profilo dei viaggi in bikeshare che mostra lo stato del job come riuscito e il link Visualizza risultati.

  5. Esamina i risultati della scansione per comprendere la distribuzione dei dati della tabella e identificare potenziali target di convalida della qualità dei dati. Nella scheda Risultati job più recenti, Knowledge Catalog visualizza le metriche a livello di colonna, tra cui %null, Conteggio e %univoci, Valori principali e Statistiche di riepilogo.

    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 Valori negativi rilevati: il valore Min è -10.0 minuti. La durata del percorso trascorsa non può essere negativa, il che indica registrazioni dei sensori o della corsa non valide. Target con una regola di validità (intervallo) (ad esempio duration_minutes ≥ 1.0) per richiedere tempi di corsa trascorsi positivi.
    start_station_id Null % Circa il 5% di valori null: la percentuale di valori null è superiore allo 0%, il che indica che alcuni record non contengono identificatori di stazione di ritiro (ad esempio corse senza dock o senza chiosco). Target con una regola di completezza (non null) per rilevare e segnalare i record con ID stazione mancanti.
    subscriber_type Valori principali Categorie impreviste: l'elenco dei valori frequenti contiene categorie non standard (ad esempio INVALID_TIER) insieme a livelli di abbonamento validi, il che indica problemi di input o importazione degli utenti non convalidati. Scegli come target una regola di validità (impostata) per applicare che tutti i valori in entrata appartengano all'elenco consentito di tipi di iscrizione.
    trip_id Conteggio unico e % Rilevato ID duplicato: l'unicità è inferiore al 100% (circa il 98%), il che indica record di identificatori ripetuti. Le chiavi primarie e gli identificatori delle corse devono essere univoci al 100%. Scegli come target una regola di univocità per segnalare e impedire record di corse duplicati.

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

Crea ed esegui un'analisi della qualità dei dati

Ora che hai scoperto l'aspetto dei dati, configura regole automatiche per la qualità dei dati per rilevare le anomalie. In questo passaggio, configurerai quattro tipi di regole comuni in base ai risultati del 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. In Generali, nel campo Nome visualizzato, inserisci bikeshare-trips-quality.

  4. In Tabella da analizzare, 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. In Pianificazione, 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 i tipi di regole, seleziona Controllo intervallo, Controllo NULL, Controllo set di valori e Controllo unicità, quindi fai clic su Ok.
    • Nell'elenco delle regole generate, seleziona la casella di controllo per ciascuna delle seguenti regole:

      • duration_minutes: controllo dell'intervallo
      • start_station_id: controllo NULL
      • subscriber_type: controllo del set di valori
      • trip_id: Controllo 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
    

Esamina le valutazioni delle regole sulla qualità dei dati

Controlla i risultati della qualità dei dati per vedere in che modo le regole hanno valutato i dati campionati 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 Scans (Analisi), fai clic sull'analisi 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 appartenenza non validi (INVALID_TIER).
      • Completezza: Non riuscita. La colonna start_station_id contiene valori null.
      • Unicità: non riuscita. La colonna trip_id contiene record duplicati.
    • Regole: nella tabella Regole, tutte e quattro le regole valutate mostrano lo stato Non riuscita.

      • duration_minutes: controllo dell'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 qualsiasi regola non riuscita, puoi copiare la query SQL nella colonna Query per ottenere i record non riusciti ed eseguirla in BigQuery per isolare e ispezionare le righe non valide.

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

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 di profilazione dei 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