Informazioni sulle asserzioni
Un'asserzione è una query di test della qualità dei dati che trova le righe che violano una o più condizioni specificate nella query. Se la query restituisce delle righe, l'asserzione non riesce. Dataform esegue le asserzioni ogni volta che aggiorna il flusso di lavoro e ti avvisa se una qualsiasi asserzione non va a buon fine.
Dataform crea automaticamente in BigQuery viste che contengono i risultati delle query di asserzione compilate. Come configurato nel file delle impostazioni del flusso di lavoro, Dataform crea queste visualizzazioni in uno schema di asserzioni in cui puoi controllare i risultati delle asserzioni.
Ad esempio, per lo schema dataform_assertions
predefinito, Dataform
crea una vista in BigQuery nel seguente formato:
dataform_assertions.assertion_name
.
Puoi creare asserzioni per tutti i tipi di tabelle Dataform: tabelle, tabelle incrementali, viste e viste materializzate.
Puoi creare asserzioni nei seguenti modi:
Aggiungi asserzioni integrate al blocco di configurazione di una tabella.
Puoi aggiungere asserzioni integrate al blocco
config
di una tabella e specificarne le condizioni.Aggiungi asserzioni manuali in un file SQLX separato.
Scrivi manualmente asserzioni personalizzate in un file SQLX separato per casi d'uso avanzati o per set di dati non creati da Dataform.
Prima di iniziare
Nella console Google Cloud , vai alla pagina Dataform.
Seleziona o crea un repository.
Seleziona o crea un workspace di sviluppo.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per creare asserzioni, chiedi all'amministratore di concederti il ruolo IAM Editor Dataform (roles/dataform.editor
) negli spazi di lavoro.
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.
Creare asserzioni integrate
Puoi aggiungere asserzioni Dataform integrate al blocco config
di una tabella. Dataform esegue queste asserzioni dopo la creazione della tabella. Dopo che
Dataform crea la tabella, puoi verificare se l'asserzione è stata superata nella scheda
Log di esecuzione del flusso di lavoro del tuo spazio di lavoro.
Puoi creare le seguenti asserzioni nel blocco config
di una tabella:
nonNull
Questa condizione afferma che le colonne specificate non sono nulle in tutte le righe della tabella. Questa condizione viene utilizzata per le colonne che non possono mai essere nulle.
Il seguente esempio di codice mostra un'asserzione
nonNull
nel bloccoconfig
di una tabella:
config {
type: "table",
assertions: {
nonNull: ["user_id", "customer_id", "email"]
}
}
SELECT ...
rowConditions
Questa condizione afferma che tutte le righe della tabella seguono la logica personalizzata che definisci. Ogni condizione di riga è un'espressione SQL personalizzata e ogni riga della tabella viene valutata in base a ogni condizione di riga. L'asserzione non riesce se una riga della tabella restituisce
false
.Il seguente esempio di codice mostra un'asserzione
rowConditions
personalizzata nel bloccoconfig
di una tabella incrementale:
config {
type: "incremental",
assertions: {
rowConditions: [
'signup_date is null or signup_date > "2022-08-01"',
'email like "%@%.%"'
]
}
}
SELECT ...
uniqueKey
Questa condizione afferma che, in una colonna specificata, nessuna riga della tabella ha lo stesso valore.
Il seguente esempio di codice mostra un'asserzione
uniqueKey
nel bloccoconfig
di una visualizzazione:
config {
type: "view",
assertions: {
uniqueKey: ["user_id"]
}
}
SELECT ...
uniqueKeys
Questa condizione afferma che, nelle colonne specificate, nessuna riga della tabella ha lo stesso valore. L'asserzione non riesce se nella tabella è presente più di una riga con gli stessi valori per tutte le colonne specificate.
Il seguente esempio di codice mostra un'asserzione
uniqueKeys
nel bloccoconfig
di una tabella:
config {
type: "table",
assertions: {
uniqueKeys: [["user_id"], ["signup_date", "customer_id"]]
}
}
SELECT ...
Aggiungere asserzioni al blocco config
Per aggiungere asserzioni al blocco di configurazione di una tabella:
- Nell'area di lavoro di sviluppo, nel riquadro File, seleziona un file SQLX di definizione della tabella.
- Nel blocco
config
del file della tabella, inserisciassertions: {}
. - All'interno di
assertions: {}
, aggiungi le tue asserzioni. - (Facoltativo) Fai clic su Formato.
Il seguente esempio di codice mostra le condizioni aggiunte nel blocco config
:
config {
type: "table",
assertions: {
uniqueKey: ["user_id"],
nonNull: ["user_id", "customer_id"],
rowConditions: [
'signup_date is null or signup_date > "2019-01-01"',
'email like "%@%.%"'
]
}
}
SELECT ...
Crea asserzioni manuali con SQLX
Le asserzioni manuali sono query SQL che scrivi in un file SQLX dedicato. Una query SQL di asserzione manuale deve restituire zero righe. Se la query restituisce righe quando viene eseguita, l'asserzione non riesce.
Per aggiungere asserzioni manuali in un nuovo file SQLX:
- Nel riquadro File, accanto a
definitions/
, fai clic sul menuAltro.
- Fai clic su Crea file.
Nel campo Aggiungi un percorso del file, inserisci il nome del file seguito da
.sqlx
. Ad esempio:definitions/custom_assertion.sqlx
.I nomi dei file possono includere solo numeri, lettere, trattini e trattini bassi.
Fai clic su Crea file.
Nel riquadro File, fai clic sul nuovo file.
Nel file, inserisci:
config { type: "assertion" }
Sotto il blocco
config
, scrivi la query SQL o più query.(Facoltativo) Fai clic su Formato.
Il seguente esempio di codice mostra un'asserzione manuale in un file SQLX che afferma
che i campi A, B e c
non sono mai NULL
in sometable
:
config { type: "assertion" }
SELECT
*
FROM
${ref("sometable")}
WHERE
a IS NULL
OR b IS NULL
OR c IS NULL
Passaggi successivi
- Per scoprire di più sui tipi di asserzione, consulta l'API Dataform.
- Per scoprire come definire le asserzioni con JavaScript, consulta Creare flussi di lavoro esclusivamente con JavaScript.
- Per scoprire come eseguire manualmente i flussi di lavoro, consulta Attivare manualmente le esecuzioni.