Panoramica della qualità dei dati automatica

Questo documento descrive la qualità automatica dei dati Dataplex, che consente di definire e misurare la qualità dei dati. Puoi automatizzare la scansione dei dati, convalidarli in base a regole definite e registrare avvisi se i dati non soddisfano i requisiti di qualità. Puoi gestire le regole di qualità dei dati e i deployment come codice, migliorando l'integrità delle pipeline di produzione dei dati.

Per iniziare, puoi utilizzare i suggerimenti sulle regole della profilazione dei dati Dataplex o creare regole personalizzate nella console Google Cloud. Dataplex fornisce monitoraggio, risoluzione dei problemi e avvisi di Cloud Logging, integrati con la qualità dei dati automatica di Dataplex.

Modello concettuale

Un'analisi della qualità dei dati applica regole di qualità ai dati della tabella per registrare i risultati.

Una scansione dei dati è un job Dataplex che campiona i dati da BigQuery e Cloud Storage 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 risorse in un progetto tenant di Google, quindi non devi configurare la tua infrastruttura.

Per creare e utilizzare un'analisi della qualità dei dati:

  1. Definisci le regole sulla qualità dei dati
  2. Configura l'esecuzione della regola
  3. Analizzare i risultati dell'analisi della qualità dei dati
  4. Configura monitoraggio e avvisi
  5. Risolvere gli errori relativi alla qualità dei dati

Definizione della regola

Le regole sulla qualità dei dati associate a un'analisi della qualità dei dati definiscono le aspettative relative ai dati. Puoi creare regole sulla qualità dei dati nei seguenti modi:

Regole predefinite

Dataplex supporta due categorie di regole predefinite: a livello di riga o aggregate.

A livello di riga

Per le regole delle categorie 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 da superare. Quando la percentuale di righe che superano la regola è inferiore al valore di soglia, la regola non viene soddisfatta.

Aggregazione

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

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

  • La colonna a cui si applica la regola.
  • Una dimensione da un insieme di dimensioni predefinite.

Nella tabella seguente sono elencati 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 colonna supportati Parametri specifici delle regole
RangeExpectation
(Controllo intervallo)
A livello di riga Verifica che il valore sia compreso tra min e max. Tutte le colonne di tipo numerico, data e timestamp. Obbligatorio:
  • Percentuale di soglia di superamento
  • Valori mean, min o max: specifica almeno un valore.
Facoltativo:
  • Attiva strict min: se abilitato, il controllo della regola utilizza ">" anziché ">=".
  • Abilita strict max: se abilitato, il controllo della regola utilizza "<" anziché "<=".
  • Abilita ignore null: se questa opzione è abilitata, i valori null vengono ignorati nel controllo delle regole.
NonNullExpectation
(controllo null)
A livello di riga Verifica che i valori della colonna non siano NULL. Tutti i tipi di colonna supportati. Obbligatorio:
  • Percentuale di soglia di superamento.
SetExpectation
(Imposta controllo)
A livello di riga Verifica se i valori in una colonna sono uno dei valori specificati in un insieme. Tutti i tipi di colonna supportati, tranne Record e Struct. Obbligatorio:
  • Insieme di valori di stringa da confrontare.
  • Percentuale di soglia di superamento.
Facoltativo:
  • Abilita ignore null: se questa opzione è abilitata, i valori null vengono ignorati nel controllo delle regole.
RegexExpectation
(Controllo espressioni regolari)
A livello di riga Confronta i valori con un'espressione regolare specificata. String Obbligatorio:
  • Pattern con espressioni regolari utilizzato per verificare.
  • Percentuale di soglia di superamento.
  • Nota: l'SQL standard di Google supporta le espressioni regolari tramite la libreria re2. Consulta la documentazione per la sintassi delle espressioni regolari.
Facoltativo:
  • Abilita ignore null: se questa opzione è abilitata, i valori null vengono ignorati nel controllo delle regole.
Uniqueness
(controllo unicità)
Aggregazione Verifica che tutti i valori in una colonna siano univoci. Tutti i tipi di colonna supportati, tranne Record e Struct. Obbligatorio:
  • Colonna e dimensione dai parametri supportati.
Facoltativo:
  • Abilita ignore null: se questa opzione è abilitata, i valori null vengono ignorati nel controllo delle regole.
StatisticRangeExpectation
(Controllo statistico)
Aggregazione Controlla se la misura statistica specificata corrisponde all'aspettativa di intervallo. Tutti i tipi di colonna numerica supportati. Obbligatorio:
  • Valori mean, min o max: specifica almeno un valore.
Facoltativo:
  • Attiva strict min: se abilitato, il controllo della regola utilizza ">" anziché ">=".
  • Abilita strict max: se abilitato, il controllo della regola utilizza "<" anziché "<=".

Tipi di regole SQL personalizzate supportati

Le regole SQL offrono la flessibilità necessaria per espandere la convalida con logica personalizzata. Queste regole sono nei seguenti tipi.

Tipo di regola Regola a livello di riga o aggregata Descrizione Tipi di colonna supportati Parametri specifici delle regole Esempio
Condizione 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 (esito positivo) o false (errore) per riga. Dataplex 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 di 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 restituisca il valore booleano true (passato) o false (errore).

L'espressione SQL può includere un riferimento a un'altra tabella utilizzando le sottoquery di espressione.

Tutte le colonne Obbligatorio:
  • Condizione SQL da utilizzare
  • Dimensioni
Facoltativo:
  • Colonna a cui associare questa regola

Esempio di tipo aggregato semplice:
avg(price) > 100

Utilizzo di una sottoquery di espressione per confrontare i valori di 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 superano una o più condizioni specificate nella query. Fornisci un'istruzione SQL che viene valutata per restituire 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 le sottoquery di espressione.

Tutte le colonne Obbligatorio:
  • Istruzione SQL per controllare lo stato non valido
  • Dimensioni
Facoltativo:
  • Colonna a cui associare questa regola.

Semplice esempio aggregato per garantire 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 di 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 esempio regole, consulta Regole di esempio sulla qualità dei dati automatica.

Per le funzioni SQL supportate, consulta la documentazione di riferimento di GoogleSQL.

Dimensioni

Le dimensioni consentono di aggregare i risultati di più regole sulla qualità dei dati per monitoraggio e avvisi. Ogni regola di qualità dei dati deve essere associata a una dimensione. Dataplex supporta le seguenti dimensioni:

  • Aggiornamento
  • Volume
  • Completezza
  • Validità
  • Coerenza
  • Accuratezza
  • Unicità

Input digitato nelle regole

Tutti i parametri valore vengono passati come valori stringa all'API. Dataplex richiede che gli input seguano il formato specificato per BigQuery.

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

Tipo Formati supportati Esempi
Proprietà binaria Valore codificato Base64 YXBwbGU=
Timestamp AAAA-[M]L-[G]G[( |T)[H]A:[M]M:[S]D[.F]] [fuso_orario]
OPPURE AAAA-[M]M-[G]G[( |T)[H]O:[M]L:[S]D[.F]][offset_time_zone]
27-09-2014 12:30:00.45-08
Data AAAA-M[M]-G[G] 2014-09-27
Tempo [H]H:[M]M:[S]D[.DDDDDD] 12:30:00,45
DateTime AAAA-[M]M-[G]G [[H]H:[M]M:[S]G[.GGGGGG]] 27-09-2014 12:30:00.45

Parametro riferimento dati

Quando crei una regola SQL personalizzata, puoi fare riferimento a una tabella di origine dati e a tutti i suoi filtri di precondizione utilizzando il parametro di riferimento dati ${data()} nella regola, anziché menzionare esplicitamente la tabella di origine e i relativi filtri. Dataplex interpreta il parametro come un riferimento alla tabella di origine e ai suoi filtri. Esempi di filtri di condizione preliminare includono filtri di 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 un'analisi incrementale della qualità dei dati che analizza solo i nuovi dati giornalieri. Alla tabella viene applicato un filtro di riga che filtra in base alle voci di oggi, transaction_timestamp >= current_date().

Una regola SQL personalizzata per trovare le righe con discount_pct per oggi ha il seguente aspetto:

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 dei dati, puoi semplificare la regola. Sostituisci la menzione della tabella e i suoi filtri di precondizione con il parametro ${data()}:

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

Dataplex interpreta il parametro ${data()} come un 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 del riferimento dei dati si riferisce solo ai dati incrementali.

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

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

Consigliato:

  • Utilizza il parametro del riferimento dei 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 della tabella:

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

Sconsigliato:

  • Non utilizzare un riferimento diretto alla tabella per fare riferimento alle colonne nella 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
    )
    

Esecuzione della regola

Puoi pianificare le analisi della qualità dei dati in modo che vengano eseguite a un intervallo specifico oppure puoi eseguire un'analisi on demand. Per gestire le analisi della qualità dei dati, puoi utilizzare l'API o la console Google Cloud.

Quando esegui un'analisi della qualità dei dati, Dataplex crea un job. Nell'ambito della specifica di un'analisi della qualità dei dati, puoi specificare l'ambito di un job in modo che sia uno dei seguenti:

Tavolo completo
Ogni job convalida l'intera tabella.
Incrementale
Ogni job convalida i dati incrementali. Per determinare gli incrementi, inserisci nella tabella una colonna Date / Timestamp che possa essere utilizzata come indicatore. In genere, si tratta della colonna su cui è partizionata la tabella.

Filtra dati

Dataplex può filtrare i dati da analizzare per verificarne la qualità utilizzando un filtro riga. La creazione di un filtro di riga ti consente di concentrarti sui dati di un determinato periodo di tempo o di un segmento specifico, come una determinata regione. L'uso dei filtri può ridurre i tempi e i costi di esecuzione, ad esempio filtrando i dati con un timestamp precedente a una determinata data.

Dati di esempio

Dataplex consente di specificare una percentuale di record dai dati da campionare per l'esecuzione di un'analisi della qualità dei dati. La creazione di scansioni di qualità dei dati su un campione di dati più ridotto può ridurre i tempi di esecuzione e il costo dell'esecuzione di query sull'intero set di dati.

Risultati della scansione della qualità dei dati

I risultati delle analisi della qualità dei dati sono disponibili in Dataplex. Puoi anche rivedere e analizzare i risultati della scansione utilizzando i seguenti metodi:

  • Esportare i risultati in BigQuery

    Puoi esportare i risultati della scansione in una tabella BigQuery per ulteriori analisi. Per personalizzare i report, puoi collegare i dati della tabella BigQuery a una dashboard di Looker. Puoi creare un report aggregato utilizzando la stessa tabella dei risultati in più analisi.

  • Pubblicare i risultati nella console Google Cloud

    Puoi pubblicare i risultati dell'analisi della qualità dei dati nelle pagine BigQuery e Data Catalog della tabella di origine nella console Google Cloud. I risultati più recenti della scansione sono disponibili nella scheda Qualità dei dati per la tabella di origine.

  • Esaminare i punteggi di qualità dei dati

    Ogni risultato della scansione fornisce punteggi di qualità dei dati che indicano la percentuale di regole superate. I punteggi vengono riportati a livello di job complessivo, a livello di colonna (se la regola viene valutata in base a una colonna) e a livello di dimensione. Utilizza i punteggi di qualità dei dati per normalizzare la qualità dei dati nelle tabelle o nelle colonne, monitorare le tendenze e identificare i dati che non soddisfano i requisiti di qualità.

Per maggiori informazioni, consulta Visualizzare i risultati dell'analisi della qualità dei dati.

Monitoraggio e avvisi

Puoi monitorare e ricevere avvisi sulle analisi della qualità dei dati utilizzando i seguenti metodi:

  • Imposta avvisi in Cloud Logging

    Puoi monitorare i job di qualità dei dati utilizzando i log data_scan e data_quality_scan_rule_result in Esplora log.

    Per ogni job di qualità dei dati, il log data_scan con il campo data_scan_type impostato su DATA_QUALITY contiene le seguenti informazioni:

    • Origine dati utilizzata per la scansione dei dati.
    • Dettagli sull'esecuzione del job, ad esempio ora di creazione, ora di inizio, ora di fine e stato del job.
    • Risultato del job di qualità dei dati: superato o non superato.
    • Superato o non superato a livello di dimensione.

    Ogni job riuscito contiene un log data_quality_scan_rule_result con le seguenti informazioni dettagliate su ciascuna regola del job:

    • Informazioni sulla configurazione, ad esempio nome della regola, tipo di regola, tipo di valutazione e dimensione.
    • Informazioni sui risultati, come superamento o errore, numero totale di righe, numero di righe superate, numero di righe null e numero di righe valutate.

    Le informazioni nei log sono disponibili tramite l'API e la console Google Cloud. Puoi utilizzare queste informazioni per configurare gli avvisi. Per ulteriori informazioni, consulta Impostare gli avvisi in Logging.

  • Inviare notifiche email

    Puoi inviare notifiche via email per avvisare le persone sullo stato e dei risultati di un job di qualità dei dati. Le notifiche sono disponibili per i seguenti scenari:

    • Il punteggio di qualità dei dati è inferiore a un punteggio target specificato
    • Job non riuscito
    • Il job è stato completato

    Configuri le notifiche quando crei un'analisi della qualità dei dati.

Risolvere gli errori relativi alla qualità dei dati

Quando una regola ha esito negativo, Dataplex produce una query per ottenere i record non riusciti. Esegui questa query per visualizzare i record che non corrispondono alla regola. Per maggiori informazioni, consulta Risolvere un errore di qualità dei dati.

Limitazioni

  • I risultati dell'analisi della qualità dei dati non vengono pubblicati in Data Catalog come tag.
  • I suggerimenti sulle regole non sono supportati in gcloud CLI.
  • La scelta delle dimensioni è fissata su una delle sette dimensioni predefinite.
  • Il numero di regole per analisi della qualità dei dati è limitato a 1000.
  • Le notifiche via email sono supportate solo in gcloud CLI e nell'API.
  • I punteggi della qualità dei dati riportati a livello di colonna sono supportati solo nell'API.

Prezzi

  • Dataplex utilizza lo SKU di elaborazione premium per addebitare la qualità automatica dei dati. Per ulteriori informazioni, consulta i prezzi di Dataplex.

  • La pubblicazione automatica dei risultati sulla qualità dei dati in Catalog non è ancora disponibile. Quando sarà disponibile, ti verrà addebitata la stessa tariffa applicata per l'archiviazione dei metadati di Catalog. Consulta la sezione Prezzi per ulteriori dettagli.

  • L'elaborazione premium di Dataplex per la qualità automatica dei dati viene fatturata al secondo con un minimo di un minuto.

  • Non vengono addebitati costi per le analisi della qualità dei dati non riuscite.

  • L'addebito dipende dal numero di righe, dal numero di colonne, dalla quantità di dati analizzati, dalla configurazione della regola di qualità dei dati, dalle impostazioni di partizionamento e clustering nella tabella e dalla frequenza dell'applicazione gscan.

  • Esistono diverse opzioni per ridurre il costo delle scansioni automatiche della qualità dei dati:

  • Separa gli addebiti per la qualità dei dati dagli altri addebiti nello SKU di elaborazione premium di Dataplex, utilizza l'etichetta goog-dataplex-workload-type con valore DATA_QUALITY.

  • Filtrare gli addebiti aggregati. Utilizza le seguenti etichette:

    • goog-dataplex-datascan-data-source-dataplex-entity
    • goog-dataplex-datascan-data-source-dataplex-lake
    • goog-dataplex-datascan-data-source-dataplex-zone
    • goog-dataplex-datascan-data-source-project
    • goog-dataplex-datascan-data-source-region
    • goog-dataplex-datascan-id
    • goog-dataplex-datascan-job-id

Che cosa succede dopo?