Informazioni sulle asserzioni
Un'affermazione è 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 righe, l'affermazione non va a buon fine. Dataform esegue le verifiche ogni volta che aggiorna il flusso di lavoro SQL e ti avvisa se una verifica non va a buon fine.
Dataform crea automaticamente in BigQuery delle visualizzazioni contenenti 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 esaminare 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 predefinite al blocco di configurazione di una tabella.
Puoi aggiungere asserzioni predefinite al blocco
config
di una tabella e specificare le relative condizioni.Aggiungi le asserzioni manuali in un file SQLX separato.
Scrivi manualmente le 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 Google Cloud console, vai alla pagina Dataform.
Seleziona o crea un repository.
Seleziona o crea uno spazio di lavoro di sviluppo.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per creare asserzioni, chiedi all'amministratore di concederti il ruolo IAM Dataform Editor (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 predefinite
Puoi aggiungere asserzioni Dataform integrate al blocco config
di una tabella. Dataform esegue queste verifiche dopo la creazione della tabella. Dopo che Dataform ha creato la tabella, puoi vedere se l'affermazione è passata nella scheda Log di esecuzione del flusso di lavoro della tua area di lavoro.
Nel blocco config
di una tabella puoi creare le seguenti asserzioni:
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 null.
Il seguente esempio di codice mostra un'affermazione
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 hai definito. Ogni condizione di riga è un'espressione SQL personalizzata e ogni riga della tabella viene valutata in base a ogni condizione di riga. L'affermazione non va a buon fine se una riga della tabella risulta in
false
.Il seguente esempio di codice mostra un'affermazione
rowConditions
personalizzata nelconfig
blocco 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'affermazione
uniqueKey
nel bloccoconfig
di una vista:
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'affermazione non va a buon fine se nella tabella è presente più di una riga con gli stessi valori per tutte le colonne specificate.
Il seguente esempio di codice mostra un'affermazione
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:
- Nella tua area di lavoro di sviluppo, seleziona un file SQLX di definizione della tabella nel riquadro File.
- 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 ...
Creare asserzioni manuali con SQLX
Le asserzioni manuali sono query SQL scritte 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 va a buon fine.
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 una o più query SQL.(Facoltativo) Fai clic su Formato.
Il seguente esempio di codice mostra un'affermazione 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 asserzioni, consulta la documentazione dell'API Dataform.
- Per scoprire come definire le asserzioni con JavaScript, consulta Creare flussi di lavoro Dataform con JavaScript.
- Per scoprire come eseguire manualmente i flussi di lavoro, consulta Attivare l'esecuzione.