create_process

Utilizzo

derived_table: {
  create_process: {
    sql_step:
      CREATE TABLE ${SQL_TABLE_NAME}
      (customer_id int(11),
      lifetime_orders int(11)) ;;
    sql_step:
      INSERT INTO ${SQL_TABLE_NAME}
      (customer_id,
      lifetime_orders)
      SELECT customer_id, COUNT(*)
      AS lifetime_orders
      FROM order
      GROUP BY customer_id ;;
  }
}
Gerarchia
create_process
Valore predefinito
Nessuno

Accetta
Uno o più sottoparametri sql_step

Definizione

Se il dialetto del database utilizza comandi DDL (Data Definition Language) personalizzati, puoi utilizzare create_process per creare tabelle derivate persistenti (PDT). create_process definisce un elenco di istruzioni SQL che verranno eseguite nell'ordine indicato. Ogni singola istruzione SQL viene specificata utilizzando il sottoparametro sql_step. Ogni sottoparametro sql_step può includere qualsiasi query SQL valida. Puoi definire più sottoparametri sql_step, che verranno eseguiti uno alla volta, nell'ordine in cui sono specificati. Looker emette le istruzioni nei sottoparametri sql_step così come sono, senza la consueta correzione degli errori di Looker.

Ad esempio, alcuni dialetti di database non supportano CREATE TABLE as SELECT emessa come singola istruzione SQL; richiedono istruzioni SQL separate. Di conseguenza, le tabelle derivate persistenti basate su SQL tradizionali non possono essere create su questi dialetti. Il parametro create_process fornisce un modo alternativo per creare PDT, creando un elenco di istruzioni SQL separate che vengono emesse in sequenza.

Puoi anche utilizzare create_process per supportare dialetti come i modelli di machine learning BigQuery ML predittivi di Google.

Il parametro create_process indica che stai scrivendo le istruzioni CREATE complete per la tabella derivata, inclusi gli indici. Per aggiungere un indice per una tabella derivata con create_process, utilizza un parametro sql_step per specificare l'SQL per l'indice.

Per le PDT definite utilizzando create_process, non puoi utilizzare nessuno dei seguenti parametri:

Esempio

Crea una tabella derivata persistente ctasless_customer_order_facts su un database MySQL in due passaggi. Innanzitutto, emetti l'istruzione SQL CREATE TABLE, definita dal primo sottoparametro sql_step. In secondo luogo, emetti l'istruzione SQL INSERT INTO con un'istruzione SELECT, definita dal secondo sottoparametro sql_step:

view: ctasless_customer_order_facts {
  derived_table: {
    datagroup_trigger: some_datagroup
    create_process: {
      sql_step: CREATE TABLE ${SQL_TABLE_NAME} (
                         customer_id int(11),
                         lifetime_orders int(11)
                       ) ;;
      sql_step: INSERT INTO ${SQL_TABLE_NAME}(customer_id, lifetime_orders)
                        SELECT customer_id, COUNT(*) AS lifetime_orders
                         FROM order
                         GROUP BY customer_id ;;
    }
  }
}

Aspetti da considerare

Operatore di sostituzione ${SQL_TABLE_NAME}

Puoi utilizzare l'operatore di sostituzione ${SQL_TABLE_NAME} per sostituire il nome calcolato della PDT in fase di creazione. In questo modo, l'istruzione SQL includerà correttamente il nome della PDT indicato nel parametro view LookML.

create_process deve creare una tabella con il nome indicato dall'operatore di sostituzione ${SQL_TABLE_NAME} oppure verrà ricompilata da zero a ogni intervallo di controllo dei trigger specificato nell'impostazione Pianificazione manutenzione PDT e gruppi di dati di una connessione (il valore predefinito è di cinque minuti). Ciò può causare un traffico di query imprevisto sul database o sul data warehouse.

Utilizza sql_create per creare una PDT in un unico passaggio

Se il dialetto del database richiede comandi DDL personalizzati e vuoi creare una PDT in un unico passaggio, puoi utilizzare sql_create per definire un'istruzione SQL CREATE completa da eseguire e creare una PDT in un unico passaggio.

Le tabelle definite con create_process non possono essere utilizzate per le PDT incrementali

Per essere utilizzata come PDT incrementale, una PDT basata su SQL deve avere una query definita utilizzando il parametro sql. Le PDT basate su SQL definite con il parametro sql_create o il parametro create_process non possono essere create in modo incrementale.

Questo perché Looker utilizza un comando INSERT o MERGE per creare gli incrementi per una PDT incrementale. La tabella derivata non può essere definita utilizzando istruzioni DDL (Data Definition Language) personalizzate, poiché Looker non sarebbe in grado di determinare quali istruzioni DDL sarebbero necessarie per creare un incremento accurato.