Panoramica della qualità dei dati automatici

Knowledge Catalog (in precedenza Dataplex Universal Catalog) consente di definire e misurare la qualità dei dati nelle tabelle BigQuery e Iceberg REST Catalog. Puoi automatizzare la scansione dei dati, convalidare i dati in base a regole definite e registrare avvisi se i dati non soddisfano i requisiti di qualità. La qualità dei dati automatica ti consente di gestire le regole e i deployment di qualità dei dati come codice, migliorando l'integrità delle pipeline di produzione dei dati.

Per analizzare i dati alla ricerca di anomalie, consulta Scansione di profilazione dei dati Knowledge Catalog. La scansione può generare regole di qualità dei dati. Puoi anche utilizzare regole di qualità integrate o crearne di personalizzate.

Knowledge Catalog fornisce monitoraggio, risoluzione dei problemi e avvisi di Cloud Logging integrati con la qualità dei dati automatica.

Modello concettuale

Una scansione della qualità dei dati applica regole di qualità ai dati della tabella per generare un report sui risultati.

Una scansione della qualità dei dati è un tipo di scansione dei dati di Knowledge Catalog che convalida i dati in base a un insieme di regole integrate. Una scansione dei dati è un job Knowledge Catalog che campiona i dati da BigQuery e Cloud Storage (tramite tabelle esterne BigQuery) e deduce vari tipi di metadati. Per misurare la qualità di una tabella utilizzando la qualità dei dati automatica, crea un oggetto DataScan di tipo data quality. La scansione viene eseguita su una sola tabella BigQuery. La scansione utilizza le risorse di un progetto tenant Google, quindi non devi configurare la tua infrastruttura.

La creazione e l'utilizzo di un'analisi della qualità dei dati prevede i seguenti passaggi:

  1. Definisci le regole sulla qualità dei dati
  2. Configurare l'esecuzione delle regole
  3. Analizzare i risultati dell'analisi della qualità dei dati
  4. Configura il monitoraggio e gli avvisi
  5. Risolvere i problemi relativi agli errori di qualità dei dati

Definizione della regola

Le regole sulla qualità dei dati associate a una scansione della qualità dei dati definiscono le aspettative relative ai dati. Puoi creare regole di qualità dei dati nei seguenti modi:

Regole integrate

Knowledge Catalog supporta le seguenti categorie di regole integrate:

A livello di riga

Per le regole di categoria a livello di riga, l'aspettativa viene applicata a ogni riga di dati. Ogni riga supera o non supera la condizione in modo indipendente. Ad esempio, column_A_value < 1.

I controlli a livello di riga richiedono di specificare una soglia di superamento. Quando la percentuale di righe che superano la regola scende al di sotto del valore di soglia, la regola non viene superata.

Aggregazione

Per le regole di aggregazione, l'aspettativa viene applicata a un singolo valore aggregato in tutti i dati. Ad esempio, Avg(someCol) >= 10. Per superarlo, il controllo deve restituire il valore booleano true. Le regole di aggregazione non forniscono un conteggio indipendente di superamento o mancato superamento per ogni riga.

Per entrambe le categorie di regole, puoi impostare i seguenti parametri:

  • La colonna a cui si applica la regola
  • Una dimensione

La tabella seguente elenca i tipi di regole aggregate e a livello di riga supportati:

Tipo di regola
(nome nella console Google Cloud )
Regola a livello di riga o aggregata Descrizione Tipi di colonne supportati Parametri specifici per le regole
RangeExpectation
(controllo intervallo)
A livello di riga Controlla se il valore è compreso tra il minimo e il massimo. Tutte le colonne di tipo numerico, data e timestamp. Obbligatorio:
  • Percentuale della soglia di superamento
  • Valori min o max: specifica almeno un valore.
(Facoltativo)
  • Attiva strict min: se l'opzione è attivata, il controllo della regola utilizza ">" anziché ">=".
  • Attiva strict max: se l'opzione è attivata, il controllo della regola utilizza "<" anziché "<=".
  • Attiva ignore null: se attivata, i valori null vengono ignorati nel controllo della regola.
NonNullExpectation
(Controllo di valori nulli)
A livello di riga Verifica che i valori delle colonne non siano NULL. Tutti i tipi di colonne supportati. Obbligatorio:
  • Percentuale soglia di superamento.
SetExpectation
(Imposta controllo)
A livello di riga Controlla se i valori in una colonna sono uno dei valori specificati in un insieme. Tutti i tipi di colonne supportati, ad eccezione di Record e Struct. Obbligatorio:
  • Set di valori stringa da confrontare.
  • Percentuale soglia di superamento.
(Facoltativo)
  • Attiva ignore null: se attivata, i valori null vengono ignorati nel controllo delle regole.
RegexExpectation
(Controllo dell'espressione regolare)
A livello di riga Controlla i valori rispetto a un'espressione regolare specificata. Stringa Obbligatorio:
  • Pattern di espressione regolare utilizzato per il controllo.
  • Percentuale soglia di superamento.
  • Nota: GoogleSQL fornisce il supporto delle espressioni regolari utilizzando la libreria re2. Per la sintassi delle espressioni regolari, consulta la documentazione.
(Facoltativo)
  • Attiva ignore null: se attivata, i valori null vengono ignorati nel controllo delle regole.
Uniqueness
(Controllo unicità)
Aggregazione Controlla se tutti i valori di una colonna sono univoci. Tutti i tipi di colonne supportati, ad eccezione di Record e Struct. Obbligatorio:
  • Colonna e dimensione dai parametri supportati.
(Facoltativo)
  • Attiva ignore null: se attivata, i valori null vengono ignorati nel controllo delle regole.
StatisticRangeExpectation
(Controllo delle statistiche)
Aggregazione Controlla se la misura statistica specificata corrisponde all'intervallo previsto. Tutti i tipi di colonne numeriche supportati. Obbligatorio:
  • Valori mean, min o max: specifica almeno un valore.
(Facoltativo)
  • Attiva strict min: se l'opzione è attivata, il controllo della regola utilizza ">" anziché ">=".
  • Attiva strict max: se l'opzione è attivata, il controllo della regola utilizza "<" anziché "<=".

Tipi di regole SQL personalizzate supportati

Le regole SQL offrono la flessibilità di espandere la convalida con una logica personalizzata. Queste regole sono disponibili nei seguenti tipi.

Tipo di regola Regola a livello di riga o aggregata Descrizione Tipi di colonne supportati Parametri specifici della regola Esempio
Condizione di riga A livello di riga Specifica un'aspettativa per ogni riga definendo un'espressione SQL in una clausola WHERE. L'espressione SQL deve restituire true (superato) o false (non superato) per riga.

Knowledge Catalog calcola la percentuale di righe che superano questa aspettativa e confronta questo valore con la percentuale di soglia di superamento per determinare l'esito positivo o negativo della regola.

L'espressione può includere un riferimento a un'altra tabella, ad esempio per creare controlli di integrità referenziale.
Tutte le colonne Obbligatorio:
  • Condizione SQL da utilizzare
  • Percentuale della soglia di superamento
  • Dimensioni
(Facoltativo)
  • Colonna a cui associare questa regola.
grossWeight <= netWeight
Condizione tabella
(espressione SQL aggregata)
Aggregazione Queste regole vengono eseguite una volta per tabella. Fornisci un'espressione SQL che restituisce come valore booleano true (superato) o false (non superato).

L'espressione SQL può includere un riferimento a un'altra tabella utilizzando sottoquery di espressione.
Tutte le colonne Obbligatorio:
  • Condizione SQL da utilizzare
  • Dimensioni
(Facoltativo)
  • Colonna a cui associare questa regola
Esempio di aggregazione semplice:
avg(price) > 100
Utilizzo di una sottoquery di espressione per confrontare i valori in una tabella diversa:
(SELECT COUNT(*) FROM `example_project.example_dataset.different-table`) < COUNT(*)
Asserzione SQL Aggregazione Una regola di asserzione utilizza una query sulla qualità dei dati per trovare le righe che non soddisfano una o più condizioni specificate nella query. Fornisci un'istruzione SQL che viene valutata per restituire le righe che corrispondono allo stato non valido. Se la query restituisce delle righe, la regola non riesce.

Ometti il punto e virgola finale dall'istruzione SQL. L'istruzione SQL può includere un riferimento a un'altra tabella utilizzando sottoquery di espressione.
Tutte le colonne Obbligatorio:
  • Istruzione SQL per controllare lo stato non valido
  • Dimensioni
(Facoltativo)
  • Colonna a cui associare questa regola.
Esempio di aggregazione semplice per verificare che discount_pct non sia maggiore di 100:
SELECT * FROM example_project.example_dataset.table WHERE discount_pct > 100

Utilizzo di una sottoquery di espressione per confrontare i valori in una tabella diversa:
SELECT * FROM `example_project.example_dataset.different-table` WHERE gross_weight > (SELECT avg(gross_weight) FROM `example_project.example_dataset.different-table`)

Per esempi di regole, consulta Regole di esempio per la qualità automatica dei dati.

Per le funzioni SQL supportate, consulta il riferimento GoogleSQL.

Riutilizzare le regole sulla qualità dei dati

Puoi riutilizzare le regole di qualità dei dati di Knowledge Catalog per condividere definizioni di regole aziendali complesse o standardizzate in più regole di qualità dei dati utilizzando i modelli di regole. Ad esempio, puoi creare un modello di regola per la convalida dell'email o per la convalida dellechiave esternae tra due tabelle, quindi riutilizzare questi modelli nelle scansioni dei dati.

Il riutilizzo delle regole offre le seguenti funzionalità principali:

  • Modelli di regole di qualità dei dati: crea modelli di regole personalizzati per archiviare definizioni di regole aziendali complesse o standardizzate che possono essere condivise tra più regole di qualità dei dati. Crea una voce data-quality-rule-template e aggiungi un aspetto data-quality-rule-template per definire la logica del modello.
  • Regole sui dati come metadati: dichiara le regole sulla qualità dei dati come aspetti in Knowledge Catalog per voci come tabelle BigQuery o termini del glossario aziendale. Utilizza il tipo di aspetto data-rules per collegare queste regole alle voci.
  • Modelli di regole di sistema: utilizza i modelli di regole di sistema per le regole utilizzate più di frequente.

Per saperne di più, vedi Riutilizzare le regole di qualità dei dati.

Dimensioni

Le dimensioni consentono di aggregare i risultati di più regole di qualità dei dati per il monitoraggio e gli avvisi. Devi associare ogni regola sulla qualità dei dati a una dimensione. Knowledge Catalog fornisce le seguenti dimensioni:

Aggiornamento
L'aggiornamento indica l'ultima volta che i dati sono stati aggiornati. Disporre di queste informazioni può aiutarti a determinare se i dati sono abbastanza recenti da essere utili.
Volume
Il volume misura se sono presenti tutti i dati previsti.
Completezza
La completezza valuta se i dati contengono tutte le informazioni necessarie per lo scopo previsto.
Validità
La validità valuta se i dati sono conformi agli standard integrati per formato, intervalli accettabili o altri criteri. Ad esempio, se una data valida deve avere il formato YYYY/mm/dd, 08-12-2019 non è un dato valido. Un altro esempio: se un prezzo scontato valido per un articolo è compreso tra 10 e 20 $, un prezzo scontato di 100 $ è un dato non valido.
Coerenza
La coerenza si riferisce alla presenza degli stessi valori per i dati in più istanze, ad esempio tabelle e colonne. L'incoerenza dei dati si verifica quando, ad esempio, le entrate di un prodotto differiscono quando vengono lette da un database delle vendite o da un database di utilizzo.
Accuratezza
L'accuratezza riflette la correttezza dei dati. Tieni presente che i dati validi non sono necessariamente accurati. Ad esempio, un colore di capelli valido potrebbe essere il castano, ma se una persona non ha i capelli castani, si tratta di dati imprecisi.
Unicità
L'unicità misura se i dati sono distinti e non duplicati.

Input digitato nelle regole

Tutti i parametri di valore vengono passati all'API come valori stringa. Knowledge Catalog richiede che gli input seguano il formato specificato da BigQuery.

I parametri di tipo binario possono essere passati come stringa con codifica base64.

Tipo Formati supportati Esempi
Binario Valore con codifica Base64 YXBwbGU=
Timestamp YYYY-[M]M-[D]D[( |T)[H]H:[M]M:[S]S[.F]] [time_zone]
OR YYYY-[M]M-[D]D[( |T)[H]H:[M]M:[S]S[.F]][time_zone_offset]
2014-09-27 12:30:00.45-08
Data AAAA-M[M]-G[G] 2014-09-27
Ora [H]H:[M]M:[S]S[.DDDDDD] 12:30:00.45
DateTime YYYY-[M]M-[D]D [[H]H:[M]M:[S]S[.DDDDDD]] 2014-09-27 12:30:00.45

Parametro di riferimento ai dati

Quando crei una regola SQL personalizzata, puoi fare riferimento a una tabella dell'origine dati e a tutti i relativi filtri di precondizione utilizzando il parametro di riferimento ai dati ${data()} nella regola, anziché menzionare esplicitamente la tabella di origine e i relativi filtri. Knowledge Catalog interpreta il parametro come riferimento alla tabella di origine e ai relativi filtri. Esempi di filtri di precondizione includono filtri per riga, percentuali di campionamento e filtri incrementali.

Ad esempio, supponiamo di avere una tabella dell'origine dati denominata my_project_id.dim_dataset.dim_currency. Vuoi eseguire una scansione incrementale della qualità dei dati che esegue la scansione solo dei nuovi dati giornalieri. Alla tabella è applicato un filtro delle righe che filtra le voci di oggi, transaction_timestamp >= current_date().

Una regola SQL personalizzata per trovare le righe con discount_pct per oggi si presenta così:

discount_pct IN (SELECT discount_pct FROM my_project_id.dim_dataset.dim_currency WHERE transaction_timestamp >= current_date())

Se utilizzi il parametro di riferimento ai dati, puoi semplificare la regola. Sostituisci il riferimento alla tabella e ai relativi filtri di precondizione con il parametro ${data()}:

discount_pct IN (SELECT discount_pct FROM ${data()})

Knowledge Catalog interpreta il parametro ${data()} come riferimento alla tabella dell'origine dati con le voci di oggi, my_project_id.dim_dataset.dim_currency WHERE transaction_timestamp >= current_date(). In questo esempio, il parametro di riferimento ai dati si riferisce solo ai dati incrementali.

Il parametro ${data()} è sensibile alle maiuscole.

Quando utilizzi un alias all'interno di una sottoquery per fare riferimento alle colonne della tabella di origine, utilizza il parametro di riferimento ai dati per fare riferimento alla tabella di origine oppure ometti il riferimento alla tabella. Non fare riferimento alle colonne della tabella di origine utilizzando un riferimento diretto alla tabella nella clausola WHERE.

Consigliato:

  • Utilizza il parametro di riferimento ai dati per fare riferimento alla tabella di origine:

    discount_pct IN (
    SELECT discount_pct FROM
    `my_project_id.dim_dataset.dim_currency` AS temp-table
    WHERE
    temp-table.transaction_timestamp = ${data()}.timestamp
    )
    
  • Ometti il riferimento alla tabella:

    discount_pct IN (
    SELECT discount_pct FROM
    `another_project.another_dataset.another_table` AS temp-table
    WHERE
    temp-table.transaction_timestamp = timestamp
    

Non consigliato:

  • Non utilizzare un riferimento diretto alla tabella per fare riferimento alle colonne della tabella di origine:

    discount_pct IN (
    SELECT discount_pct FROM
    `my_project_id.dim_dataset.dim_currency` AS temp-table
    WHERE
    temp-table.transaction_timestamp = `my_project_id.dim_dataset.dim_currency`.timestamp
    )
    

Utilizzo valido di tabelle diverse:

  • Puoi utilizzare un riferimento diretto alla tabella quando confronti colonne di una tabella diversa:

    discount_pct IN (
    SELECT discount_pct FROM
    `my_project_id.dim_dataset.dim_currency` AS temp-table
    WHERE
    temp-table.transaction_timestamp = `another_project.another_dataset.another_table`.timestamp
    )
    

Query di debug

Quando crei una regola, puoi includere facoltativamente una query di debug da eseguire insieme alla regola. Una query di debug è un'istruzione SQL che restituisce fino a 10 valori scalari. Questi valori possono aiutare a diagnosticare la causa in caso di errore della regola. Puoi aggiungere al massimo una query di debug per regola e la sua lunghezza non deve superare i 1024 caratteri.

Considera la seguente regola di asserzione SQL nella tabella example_project.example_dataset.table, che controlla se le entrate medie per articolo superano 100:

SELECT
  *
FROM
  `example_project.example_dataset.table`
WHERE
  SUM(revenue) / COUNT(DISTINCT item_id) > 100

Se la regola precedente non viene rispettata, puoi visualizzare metriche come entrate totali, numero di articoli distinti ed entrate medie per articolo per diagnosticare il problema. La seguente query di debug restituisce queste metriche:

SELECT
  SUM(revenue),
  COUNT(DISTINCT item_id),
  SUM(revenue)