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:
- 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.
- 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.
- Esamina i risultati della scansione del profilo di dati per trovare pattern e potenziali anomalie.
- 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.
- Esamina i risultati della valutazione per vedere quali regole di qualità sono state superate o meno.
Prima di iniziare
Configura il progetto:
-
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.
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:
-
Crea, esegui ed elimina scansioni dei dati:
Editor Dataplex DataScan (
roles/dataplex.dataScanEditor) -
Crea, compila ed elimina tabelle di esempio:
Proprietario dati BigQuery (
roles/bigquery.dataOwner) -
Esegui query SQL in BigQuery:
Utente job BigQuery (
roles/bigquery.jobUser)
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 esempioname@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.
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.
Crea l'agente di servizio Knowledge Catalog:
gcloud beta services identity create --service=dataplex.googleapis.comQuesto 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_NUMBERnell'output per i passaggi successivi.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.
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
Nella console Google Cloud , vai alla pagina BigQuery.
Nel riquadro Explorer, fai clic su Visualizza azioni accanto al tuo ID progetto, quindi fai clic su Crea set di dati.
Nel campo Dataset ID (ID set di dati), inserisci
quickstart_data_profile.Nell'elenco Posizione dei dati, seleziona us-central1 (Iowa).
Fai clic su Crea set di dati.
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_IDcon l'ID progetto Google Cloud .Fai clic su Esegui.
gcloud
In Cloud Shell, crea il set di dati
quickstart_data_profilenella regioneus-central1:bq --location=us-central1 mk --dataset PROJECT_ID:quickstart_data_profile
Sostituisci
PROJECT_IDcon l'ID progettoGoogle Cloud .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
Nella console Google Cloud , vai alla pagina Profilazione e qualità dei dati.
Fai clic su Crea scansione di profilazione dei dati.
In Scegli tipo, lascia selezionata l'opzione Scansione di profilazione dei dati.
Nella sezione Generale, nel campo Nome visualizzato, inserisci
bikeshare-trips-profile.In Tabella da scansionare, nel campo Tabella, fai clic su Sfoglia, seleziona la tabella
quickstart_data_profile.bikeshare_tripsnel progetto e poi fai clic su Seleziona.Per Modalità, seleziona Standard.
In Ambito, seleziona Tutti i dati.
Per Programmazione, seleziona On demand.
Lascia invariate le altre impostazioni predefinite.
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
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_IDcon l'ID progettoGoogle Cloud .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.
Nella console Google Cloud , vai alla pagina Profilazione e qualità dei dati.
Nell'elenco delle scansioni, fai clic su bikeshare-trips-profile.
Se la scansione non è ancora stata eseguita, fai clic su Esegui ora.
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:
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_minutesStatistiche riepilogative Rilevati valori negativi: il valore Min è -10.0minuti. 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_typeValori 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_idConteggio 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
Nella console Google Cloud , vai alla pagina Profilazione e qualità dei dati.
Fai clic su Crea scansione della qualità dei dati.
Nella sezione Generale, nel campo Nome visualizzato, inserisci
bikeshare-trips-quality.In Tabella da scansionare, nel campo Tabella, fai clic su Sfoglia, seleziona la tabella
quickstart_data_profile.bikeshare_tripse poi fai clic su Seleziona.In Ambito, seleziona Tutti i dati.
Per Programmazione, seleziona On demand.
Lascia invariate le altre impostazioni predefinite e fai clic su Continua.
Nella sezione Regole di qualità dei dati, fai clic su Aggiungi regole e seleziona Tipi di regole integrate.
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_typeetrip_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 intervallostart_station_id: Controllo NULLsubscriber_type: Controllo del set di valoritrip_id: Controllo di unicità
Fai clic su Seleziona.
- Nel campo Scegli colonne, fai clic su Sfoglia e seleziona
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, inserisci1.0nel 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 MembershipeWeekender) e fai clic su Salva.
- Per
Fai clic su Continua e poi su Esegui scansione.
gcloud
In Cloud Shell, crea un file denominato
dq_bikeshare.yamlcon 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" EOFCrea 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_IDcon l'ID progettoGoogle Cloud .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.
Nella console Google Cloud , vai alla pagina Profilazione e qualità dei dati.
Nella tabella Scansioni, fai clic sulla scansione bikeshare-trips-quality.
Nella sezione Panoramica, fai clic su Visualizza risultati per aprire i dettagli del job.
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_minutescontiene valori negativi esubscriber_typecontiene valori di abbonamento non validi (INVALID_TIER). - Completezza: Non riuscita. La colonna
start_station_idcontiene valori nulli. - Unicità: Non riuscita. La colonna
trip_idcontiene record duplicati.
- Validità: Non riuscita. La colonna
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
Nella console Google Cloud , vai alla pagina Profilazione e qualità dei dati.
Nella tabella Scansioni, seleziona bikeshare-trips-quality e bikeshare-trips-profile.
Fai clic su Elimina e conferma.
Vai alla pagina BigQuery.
Nel riquadro Explorer, fai clic su Set di dati.
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
- Visualizzare e risolvere i problemi relativi ai risultati della scansione della qualità dei dati
- Monitorare le scansioni dei dati e configurare gli avvisi
- Crea un flusso di lavoro di qualità dei dati policy-as-code utilizzando Antigravity CLI
- Gestire le regole di qualità dei dati come codice con Terraform
- Riutilizzare le regole di qualità dei dati in più tabelle
- Esplora altri casi d'uso di Knowledge Catalog