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ù parametri secondari sql_step
|
Definizione
Se il dialetto del tuo database utilizza comandi Data Definition Language (DDL) personalizzati, puoi utilizzare create_process per creare tabelle derivate permanenti (PDT). create_process definisce un elenco di istruzioni SQL che verranno eseguite nell'ordine elencato. Ogni singola istruzione SQL viene specificata utilizzando il sottoparametro sql_step. Ogni sottoparametro sql_step può includere qualsiasi query SQL valida. Puoi definire più parametri secondari 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 emesso come singola istruzione SQL, ma richiedono istruzioni SQL separate. Di conseguenza, non è possibile creare tabelle derivate permanenti basate su SQL su questi dialetti. Il parametro create_process fornisce un modo alternativo per creare PDT, creando un elenco di istruzioni SQL separate che vengono eseguite in sequenza.
Puoi anche utilizzare create_process per supportare dialetti come i modelli di machine learning predittivi BigQuery ML 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:indexescluster_keysdistributiondistribution_stylepartition_keyssortkeys
Esempio
Crea una tabella derivata persistente ctasless_customer_order_facts su un database MySQL in due passaggi. Innanzitutto, esegui l'istruzione SQL CREATE TABLE, definita dal primo sottoparametro sql_step. In secondo luogo, esegui l'istruzione SQL INSERT INTO con un'istruzione SELECT, definita dal secondo parametro secondario 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 del PDT in fase di creazione. In questo modo, l'istruzione SQL includerà correttamente il nome PDT specificato nel parametro view di LookML.
create_processdeve creare una tabella con il nome indicato dall'operatore di sostituzione${SQL_TABLE_NAME}, altrimenti verrà ricostruita da zero a ogni intervallo di controllo del trigger specificato nell'impostazione Pianificazione manutenzione PDT e gruppi di dati di una connessione (il valore predefinito è cinque minuti). Ciò può causare un traffico di query imprevisto sul database o sul data warehouse.
Utilizza sql_create per creare un PDT in un solo 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.