Utilizzo
Gerarchia
create_process |
Valore predefinito
NessunaAccetta
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 legale. Puoi definire più sottoparametri sql_step
che verranno eseguiti uno alla volta, nell'ordine in cui sono specificati. Looker invia 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
come istruzione SQL singola, ma richiedono istruzioni SQL separate. Di conseguenza, non è possibile creare tradizionali 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 inviate in sequenza.
Puoi anche utilizzare create_process
per supportare dialetti come i modelli predittivi di machine learning BigQuery ML di Google.
Il parametro create_process
indica che stai scrivendo le istruzioni CREATE
complete per la tabella derivata, inclusi eventuali 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 i seguenti parametri:indexes
cluster_keys
distribution
distribution_style
partition_keys
sortkeys
Esempio
Crea una tabella derivata permanente ctasless_customer_order_facts
in un database MySQL in due passaggi. Innanzitutto, invia l'istruzione SQL CREATE TABLE
, definita dal primo sottoparametro sql_step
. In secondo luogo, invia l'istruzione INSERT INTO
SQL 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
${SQL_TABLE_NAME}
operatore di sostituzione
Puoi utilizzare l'operatore di sostituzione ${SQL_TABLE_NAME}
per sostituire il nome calcolato della PDT creata. Ciò garantisce che l'istruzione SQL includa correttamente il nome PDT specificato nel parametro LookML view
.
create_process
deve creare una tabella con il nome indicato dall'operatore di sostituzione${SQL_TABLE_NAME}
, altrimenti verrà ricreata da zero a ogni intervallo di controllo del trigger specificato nell'impostazione PDT and Datagroup Maintenance Schedule (Pianificazione manutenzione PDT) e gruppi di dati (il valore predefinito è di cinque minuti). Ciò può causare traffico di query imprevisto sul tuo database o data warehouse.
Usa sql_create
per creare una PDT in un solo passaggio
Se il dialetto del database richiede comandi DDL personalizzati e vuoi creare una PDT in un solo passaggio, puoi utilizzare sql_create
per definire un'istruzione SQL CREATE
completa per eseguire e creare una PDT in un solo passaggio.
Le tabelle definite con create_process
non possono essere utilizzate per le PDT incrementali
Da utilizzare come PDT incrementale, per una PDT basata su SQL è necessario definire una query con 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.
Il motivo è che Looker utilizza un comando INSERT o USC 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 è in grado di determinare quali istruzioni DDL sarebbero necessarie per creare un incremento preciso.