Questo documento mostra come definire le tabelle con Dataform core in Dataform.
Informazioni sulle definizioni delle tabelle
Per definire una tabella, devi definire il tipo di tabella e scrivere un'istruzione SELECT
in un file SQLX di type: "table"
. Dataform compila quindi il
codice principale Dataform in SQL, esegue il codice SQL e crea le
tabelle definite in BigQuery.
In un'istruzione SELECT
principale di Dataform, definisci la struttura della tabella e
fai riferimento ad altri oggetti del tuo flusso di lavoro SQL.
Oltre a definire le tabelle in un file SLQX type: "table"
, puoi creare tabelle vuote definendo una query SQL personalizzata in un file SQLX di type: "operations"
.
Per maggiori informazioni, consulta Creare una tabella vuota.
Fai riferimento alle dipendenze con ref
Per fare riferimento a un oggetto del flusso di lavoro SQL in un'istruzione SELECT
e aggiungerlo automaticamente come dipendenza, utilizza la funzione ref
. Dataform esegue le dipendenze prima delle tabelle che dipendono da queste per garantire il corretto ordine della pipeline.
La funzione ref
è una funzione integrata di base di Dataform, fondamentale per la gestione delle dipendenze in Dataform. La funzione ref
ti consente di fare riferimento ai seguenti oggetti definiti nel flusso di lavoro SQL di Dataform e di dipendere automaticamente dall'hardcoded dei nomi dello schema e delle tabelle:
- tabelle di tutti i tipi di tabella supportati
- dichiarazioni delle origini dati
- operazioni SQL personalizzate con la proprietà
hasOutput
impostata sutrue
Dataform utilizza la funzione ref
per creare una struttura delle dipendenze di tutte le tabelle da creare o aggiornare.
Dopo la compilazione, Dataform aggiunge istruzioni boilerplate come CREATE
, REPLACE
, INSERT
o MERGE
all'istruzione SQL.
Il seguente esempio di codice mostra una definizione di tabella con l'utilizzo della funzione ref
:
config { type: "table" }
SELECT
order_date AS date,
order_id AS order_id,
order_status AS order_status,
SUM(item_count) AS item_count,
SUM(amount) AS revenue
FROM ${ref("store_clean")}
GROUP BY 1, 2
Nella funzione ref
, devi fornire il nome della tabella o della dichiarazione dell'origine dati da cui dipendere. Si tratta in genere del nome del file SQLX in cui viene definita la tabella o la dichiarazione dell'origine dati.
Se viene eseguito l'override del nome di una tabella, utilizza quello sostituito nella funzione ref
.
Ad esempio, fai riferimento a una tabella con config { name: "overridden_name" }
come ref("overridden_name")
. Per saperne di più sull'override dei nomi delle tabelle, consulta Configurare impostazioni aggiuntive per le tabelle.
Se hai più tabelle con lo stesso nome in schemi diversi, puoi fare riferimento a una tabella specifica fornendo due argomenti alla funzione ref
: nome schema e nome tabella.
Il seguente esempio di codice mostra la funzione ref
con due argomenti per specificare una tabella in uno schema specifico:
config { type: "table" }
SELECT * FROM ${ref("schema", "store_clean")}
Puoi anche aggiungere manualmente le dipendenze di tabella al blocco config
per tabelle,
asserzioni, dichiarazioni delle origini dati o operazioni SQL personalizzate a cui non viene fatto
riferimento in una funzione ref
nell'istruzione SELECT
. Dataform esegue queste dipendenze prima delle tabelle dipendenti.
Il seguente esempio di codice mostra una dipendenza di tabella nel blocco config
:
config { dependencies: [ "unreferenced_table" ] }
SELECT * FROM ...
Per ulteriori informazioni sulla gestione delle dipendenze nel flusso di lavoro SQL, consulta Dichiarare le dipendenze.
Fai riferimento ad altre tabelle con resolve
La funzione resolve
ti consente di fare riferimento a una tabella o alla dichiarazione di un'origine dati in un'istruzione SELECT
come la funzione ref
, ma non aggiunge il riferimento come dipendenza. Ciò
significa che l'oggetto a cui viene fatto riferimento utilizzando resolve
non influisce sull'esecuzione della
tabella che utilizza resolve
.
Per ulteriori informazioni sulle funzioni principali integrate di Dataform, consulta la documentazione di riferimento principale di Dataform.
Prima di iniziare
- Crea e inizializza un'area di lavoro di sviluppo nel tuo repository.
- (Facoltativo) Dichiara un'origine dati.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per definire una tabella,
chiedi all'amministratore di concederti il ruolo IAM
Editor Dataform (roles/dataform.editor
) per le aree di lavoro.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Potresti anche essere in grado di ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Crea un file SQLX per definire una tabella
Archivia i file SQLX di definizione della tabella nella directory definitions/
. Per creare un nuovo file SQLX nella directory definitions/
, segui questi passaggi:
Nella console Cloud, vai alla pagina Dataform.
Per aprire un repository, fai clic sul suo nome.
Per aprire un'area di lavoro di sviluppo, fai clic sul nome dell'area di lavoro.
Nel riquadro File, accanto a
definitions/
, fai clic sul menu Altro.Fai clic su Crea file.
Nel campo Aggiungi un percorso file, inserisci il nome del file seguito da
.sqlx
dopodefinitions/
. Ad esempio:definitions/my-table.sqlx
.I nomi file possono includere solo numeri, lettere, trattini e trattini bassi.
Fai clic su Crea file.
Definisci il tipo di tabella
Per creare una nuova definizione del tipo di tabella, segui questi passaggi:
- Nel riquadro File dell'area di lavoro di sviluppo, espandi la directory
definitions/
. - Seleziona il file SQLX di definizione della tabella che vuoi modificare.
Nel file, inserisci il seguente snippet di codice:
config { type: "TABLE_TYPE" }
Sostituisci TABLE_TYPE con uno dei seguenti tipi di tabella:
table
incremental
view
(Facoltativo) Per definire una vista materializzata, inserisci la proprietà
materialized
intype: "view"
nel seguente formato:config { type: "view", materialized: true }
Per saperne di più, consulta il
ITableConfig
riferimento principale di Dataform.(Facoltativo) Fai clic su Formato.
Definisci la struttura e le dipendenze della tabella
Per scrivere un'istruzione SELECT
di definizione della tabella e definire la struttura e le dipendenze della tabella, segui questi passaggi:
- Nel riquadro File dell'area di lavoro di sviluppo, espandi la directory
definitions/
. - Seleziona il file SQLX di definizione della tabella che vuoi modificare.
- Sotto il blocco
config
, scrivi un'istruzioneSELECT
. - (Facoltativo) Fai clic su Formato.
Il seguente esempio di codice mostra una definizione di tabella con un'istruzione SELECT
e la funzione ref
:
config { type: "table" }
SELECT
customers.id AS id,
customers.first_name AS first_name,
customers.last_name AS last_name,
customers.email AS email,
customers.country AS country,
COUNT(orders.id) AS order_count,
SUM(orders.amount) AS total_spent
FROM
dataform-samples.dataform_sample.crm_customers AS customers
LEFT JOIN ${ref('order_stats')} orders
ON customers.id = orders.customer_id
WHERE
customers.id IS NOT NULL
AND customers.first_name <> 'Internal account'
AND country IN ('UK', 'US', 'FR', 'ES', 'NG', 'JP')
GROUP BY 1, 2, 3, 4, 5
Aggiungi dipendenze manuali delle tabelle
Per aggiungere dipendenze della tabella che non sono indicate nell'istruzione SELECT
, ma che devono essere eseguite prima della tabella corrente, segui questi passaggi:
- Nel riquadro File dell'area di lavoro di sviluppo, espandi la directory
definitions/
. - Seleziona il file SQLX di definizione della tabella che vuoi modificare.
Nel blocco
config
della tabella, inserisci il seguente snippet di codice:dependencies: [ "DEPENDENCY_TABLE", ]
Sostituisci DEPENDENCY_TABLE con il nome file della tabella che vuoi aggiungere come dipendenza. Puoi inserire più nomi file.
(Facoltativo) Fai clic su Formato.
Il seguente esempio di codice mostra due tabelle aggiunte come dipendenze di tabella manuali al blocco config
di un file di definizione di tabella:
config { dependencies: [ "some_table", "some_other_table" ] }
Passaggi successivi
- Per informazioni su come configurare le tabelle incrementali, consulta Configurare le tabelle incrementali.
- Per informazioni su come configurare le partizioni e i cluster delle tabelle, consulta Creare partizioni e cluster delle tabelle.
- Per informazioni su come aggiungere la documentazione alle tabelle, consulta la documentazione sull'aggiunta di tabelle.
- Per informazioni su come testare i dati delle tabelle con le asserzioni, consulta Testare le tabelle con le asserzioni.
- Per informazioni su come definire le tabelle con JavaScript, consulta Creare flussi di lavoro SQL con JavaScript.
- Per informazioni su come configurare impostazioni aggiuntive della tabella, consulta Configurare impostazioni aggiuntive della tabella.