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 è 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:
- Definisci le regole sulla qualità dei dati
- Configurare l'esecuzione delle regole
- Analizzare i risultati dell'analisi della qualità dei dati
- Configura il monitoraggio e gli avvisi
- 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:
- Utilizzare i consigli della profilazione dei dati di Knowledge Catalog
- Utilizzare le regole integrate o i modelli di regole di sistema
- Creare regole SQL personalizzate
- Riutilizzare le regole sulla qualità dei dati
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 booleanotrue. 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:
|
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:
|
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:
|
RegexExpectation(Controllo dell'espressione regolare) |
A livello di riga | Controlla i valori rispetto a un'espressione regolare specificata. | Stringa | Obbligatorio:
|
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:
|
StatisticRangeExpectation(Controllo delle statistiche) |
Aggregazione | Controlla se la misura statistica specificata corrisponde all'intervallo previsto. | Tutti i tipi di colonne numeriche supportati. | Obbligatorio:
|
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:
|
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:
|
Esempio di aggregazione semplice:avg(price) > 100Utilizzo 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:
|
Esempio di aggregazione semplice per verificare che discount_pct
non sia maggiore di 100:SELECT * FROM example_project.example_dataset.table WHERE discount_pct > 100Utilizzo 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-templatee aggiungi un aspettodata-quality-rule-templateper 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-rulesper 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)