Creare una tabella

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:

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

  1. Crea e inizializza un'area di lavoro di sviluppo nel tuo repository.
  2. (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:

  1. Nella console Cloud, vai alla pagina Dataform.

    Vai alla pagina Dataform

  2. Per aprire un repository, fai clic sul suo nome.

  3. Per aprire un'area di lavoro di sviluppo, fai clic sul nome dell'area di lavoro.

  4. Nel riquadro File, accanto a definitions/, fai clic sul menu Altro.

  5. Fai clic su Crea file.

  6. Nel campo Aggiungi un percorso file, inserisci il nome del file seguito da .sqlx dopo definitions/. Ad esempio: definitions/my-table.sqlx.

    I nomi file possono includere solo numeri, lettere, trattini e trattini bassi.

  7. Fai clic su Crea file.

Definisci il tipo di tabella

Per creare una nuova definizione del tipo di tabella, segui questi passaggi:

  1. Nel riquadro File dell'area di lavoro di sviluppo, espandi la directory definitions/.
  2. Seleziona il file SQLX di definizione della tabella che vuoi modificare.
  3. 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
  4. (Facoltativo) Per definire una vista materializzata, inserisci la proprietà materialized in type: "view" nel seguente formato:

    config {
      type: "view",
      materialized: true
    }
    

    Per saperne di più, consulta il ITableConfig riferimento principale di Dataform.

  5. (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:

  1. Nel riquadro File dell'area di lavoro di sviluppo, espandi la directory definitions/.
  2. Seleziona il file SQLX di definizione della tabella che vuoi modificare.
  3. Sotto il blocco config, scrivi un'istruzione SELECT.
  4. (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:

  1. Nel riquadro File dell'area di lavoro di sviluppo, espandi la directory definitions/.
  2. Seleziona il file SQLX di definizione della tabella che vuoi modificare.
  3. 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.

  4. (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