Questo documento mostra come definire la relazione tra gli oggetti nel flusso di lavoro SQL in Dataform dichiarando le dipendenze.
Puoi definire una relazione di dipendenza tra gli oggetti di un flusso di lavoro SQL. In una relazione di dipendenza, l'esecuzione dell'oggetto dipendente dipende dall'esecuzione dell'oggetto della dipendenza. Ciò significa che Dataform esegue la dipendenza dopo la dipendenza. Puoi definire la relazione dichiarando le dipendenze all'interno del file di definizione SQLX dell'oggetto dipendente.
Le dichiarazioni sulle dipendenze costituiscono un albero delle dipendenze del flusso di lavoro SQL, che determina l'ordine in cui Dataform esegue gli oggetti del flusso di lavoro SQL.
Puoi definire la relazione di dipendenza tra i seguenti oggetti del flusso di lavoro SQL:
- Dichiarazioni dell'origine dati
- Dichiarazioni delle origini dati BigQuery che consentono di fare riferimento a queste origini dati nelle definizioni delle tabelle Dataform e nelle operazioni SQL. Puoi impostare una dichiarazione dell'origine dati come dipendenza, ma non come dipendente.
- Tabelle
- Tabelle create in Dataform in base alle origini dati dichiarate o ad altre tabelle nel flusso di lavoro SQL. Dataform supporta i seguenti tipi di tabella: tabella, tabella incrementale, vista e vista materializzata. Puoi impostare una tabella come dipendenza e come dipendente.
- Operazioni SQL personalizzate
- Istruzioni SQL che eseguono Dataform in BigQuery così com'è,
senza modifiche. Puoi impostare un'operazione SQL personalizzata definita in un file
type: operations
come dipendenza e come dipendente. Per dichiarare un'operazione SQL personalizzata come dipendenza nella funzioneref
, devi impostare la proprietàhasOutput
sutrue
nel file di definizione SQLX personalizzato. - Affermazioni
- Query dei test sulla qualità dei dati che puoi utilizzare per convalidare i dati delle tabelle.
Dataform esegue asserzioni ogni volta che aggiorna il flusso di lavoro SQL e ti avvisa in caso di esito negativo. Puoi impostare un'asserzione definita in un file
type: assertion
come dipendenza e come dipendente dichiarando le dipendenze nel bloccoconfig
.
Puoi definire la relazione di dipendenza nei seguenti modi:
- Dichiara una dipendenza utilizzando la funzione Core Dataform
ref
per fare riferimento alla dipendenza in un'istruzioneSELECT
. - Dichiara un elenco di dipendenze nel blocco
config
di un file di definizione SQLX.
Prima di iniziare
- Crea e inizializza un'area di lavoro di sviluppo nel repository.
- (Facoltativo) Dichiara un'origine dati.
- Crea almeno due oggetti del flusso di lavoro SQL: tabelle, asserzioni, dichiarazioni dell'origine dati o operazioni.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per dichiarare le dipendenze di tabelle, asserzioni, dichiarazioni di origini dati e operazioni SQL personalizzate, chiedi al tuo amministratore di concederti il ruolo IAM Editor Dataform (roles/dataform.editor
) sulle aree di lavoro.
Per maggiori informazioni sulla concessione dei ruoli, vedi Gestire l'accesso.
Potresti anche ottenere le autorizzazioni richieste tramite ruoli personalizzati o altri ruoli predefiniti.
Dichiarare una dipendenza come argomento della funzione ref
Per fare riferimento a una dichiarazione e dichiararla automaticamente in un'istruzione SELECT
,
aggiungi la dipendenza come argomento della funzione ref
.
La funzione ref
è una funzione integrata di Dataform integrata che consente di fare riferimento e di dipendere automaticamente da qualsiasi tabella, dichiarazione dell'origine dati o operazione SQL personalizzata con la proprietà hasOutput
impostata su true
nel flusso di lavoro SQL.
Per maggiori informazioni sulla funzione ref
, consulta
Riferimento per i metodi di contesto principali di Dataform.
Per ulteriori informazioni sull'utilizzo della funzione ref
in una definizione tabella, consulta
Informazioni sulle definizioni tabella.
Il seguente esempio di codice mostra la dichiarazione dell'origine dati source_data
aggiunta come argomento della funzione ref
nel file di definizione SQLX incremental_table.sqlx
di una tabella incrementale:
// filename is incremental_table.sqlx
config { type: "incremental" }
SELECT * FROM ${ref("source_data")}
Nell'esempio di codice precedente, source_data
è stato dichiarato automaticamente una dipendenza di incremental_table
.
Il seguente esempio di codice mostra il file SQLX di definizione della tabella some_table
aggiunto come argomento della funzione ref
nel file di definizione SQL di un'asserzione custom_assertion.sqlx
:
// filename is custom_assertion.sqlx
config { type: "assertion" }
SELECT
*
FROM
${ref("some_table")}
WHERE
a is null
or b is null
or c is null
Nell'esempio di codice precedente, some_table
è stato dichiarato automaticamente una dipendenza di custom_assertion
. Durante l'esecuzione, Dataform esegue prima some_table
e poi custom_assertion
dopo la creazione di some_table
.
Dichiarare le dipendenze nel blocco config
Per dichiarare le dipendenze a cui non viene fatto riferimento nella definizione dell'istruzione SQL del dipendente, ma che devono essere eseguite prima della tabella, dell'asserzione o dell'operazione SQL personalizzata, procedi nel seguente modo:
- Nell'area di lavoro di sviluppo, nel riquadro File, espandi la directory
definitions/
. - Seleziona la tabella, l'asserzione o il file SQLX dell'operazione SQL personalizzata che vuoi modificare.
- Nel blocco
config
del file, inserisci il seguente snippet di codice:
dependencies: [ "DEPENDENCY", ]
Sostituisci DEPENDENCY con il nome file della tabella, l'asserzione, la dichiarazione dell'origine dati o l'operazione SQL personalizzata che vuoi aggiungere come dipendenza. Puoi inserire più nomi file.
L'esempio di codice seguente mostra la tabella some_table
e l'assemblaggio some_assertion
aggiunti come dipendenze al blocco config
di un file di definizione della tabella:
config { dependencies: [ "some_table", "some_assertion" ] }
Passaggi successivi
- Per informazioni su come dichiarare un'origine dati, consulta Dichiarare un'origine dati.
- Per scoprire come definire le operazioni SQL personalizzate, consulta Aggiungere operazioni SQL personalizzate.
- Per informazioni su come riutilizzare il codice nel flusso di lavoro SQL con includi, consulta Riutilizzare le variabili e le funzioni con includi.