Nutzung
create_process: {
sql_step:
TABELLE ${SQL_TABLE_NAME}
(customer_id int(11),
Hierarchie
create_process |
Standardwert
KeineAkzeptiert
Mindestens ein sql_step -Unterparameter
|
Definition
Wenn Ihr Datenbankdialekt benutzerdefinierte DDL-Befehle (Data Definition Language) verwendet, können Sie create_process
verwenden, um persistente abgeleitete Tabellen (PDTs) zu erstellen. create_process
definiert eine Liste von SQL-Anweisungen, die in der aufgeführten Reihenfolge ausgeführt werden. Jede einzelne SQL-Anweisung wird mit dem Unterparameter sql_step
angegeben. Jeder sql_step
-Unterparameter kann eine beliebige SQL-Abfrage enthalten. Sie können mehrere sql_step
-Unterparameter definieren, die nacheinander in der angegebenen Reihenfolge ausgeführt werden. Looker gibt die Anweisungen in den sql_step
-Unterparametern unverändert ohne die übliche Fehlerkorrektur von Looker aus.
Beispielsweise unterstützen einige Datenbankdialekte CREATE TABLE as SELECT
nicht als einzelne SQL-Anweisung. Sie erfordern separate SQL-Anweisungen. Daher können herkömmliche SQL-basierte persistente abgeleitete Tabellen für diese Dialekte nicht erstellt werden. Der Parameter create_process
bietet eine alternative Möglichkeit, PDTs zu erstellen. Dazu wird eine Liste separater SQL-Anweisungen erstellt, die der Reihe nach ausgegeben werden.
Sie können create_process
auch zur Unterstützung von Dialekten wie den Google-Modellen BigQuery ML für maschinelles Lernen verwenden.
Der Parameter create_process
gibt an, dass Sie die vollständigen CREATE
-Anweisungen für die abgeleitete Tabelle schreiben, einschließlich aller Indexe. Wenn Sie einen Index für eine abgeleitete Tabelle mit create_process
hinzufügen möchten, geben Sie den SQL-Parameter für den Index mit dem Parameter sql_step
an.
Für PDTs, die mit
create_process
definiert sind, können Sie keinen der folgenden Parameter verwenden:indexes
cluster_keys
distribution
distribution_style
partition_keys
sortkeys
Beispiel
Erstellen Sie in zwei Schritten eine persistente ctasless_customer_order_facts
-abgeleitete Tabelle in einer MySQL-Datenbank. Geben Sie zuerst die SQL-Anweisung CREATE TABLE
aus, die durch den ersten Unterparameter sql_step
definiert ist. Führen Sie als Nächstes die SQL-Anweisung INSERT INTO
mit einer SELECT
-Anweisung aus, die durch den zweiten Unterparameter sql_step
definiert wird:
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 ;;
}
}
}
Wichtige Punkte
${SQL_TABLE_NAME}
-Substitutionsoperator
Mit dem Substitutionsoperator ${SQL_TABLE_NAME}
können Sie den berechneten Namen der zu erstellenden PDT ersetzen. Dadurch wird sichergestellt, dass die SQL-Anweisung den PDT-Namen, der im LookML-Parameter view
angegeben ist, korrekt enthält.
create_process
muss eine Tabelle mit dem vom Substitutionsoperator${SQL_TABLE_NAME}
angegebenen Namen erstellen. Andernfalls wird er bei jedem Triggerprüfintervall, der in der Einstellung PDT und Datagroup-Wartungsplan einer Verbindung angegeben ist, neu erstellt. Der Standardwert ist fünf Minuten. Das kann zu unerwartetem Abfragetraffic in Ihrer Datenbank oder Ihrem Data Warehouse führen.
Verwenden Sie sql_create
, um in einem Schritt ein PDT zu erstellen
Wenn Ihr Datenbankdialekt benutzerdefinierte DDL-Befehle erfordert und Sie ein PDT in einem einzigen Schritt erstellen möchten, können Sie mit sql_create
eine vollständige SQL CREATE
-Anweisung definieren, um ein PDT in einem einzigen Schritt auszuführen und zu erstellen.
Mit create_process
definierte Tabellen können nicht für inkrementelle PDTs verwendet werden
Um als inkrementeller PDT verwendet zu werden, muss bei einem SQL-basierten PDT eine Abfrage mit dem Parameter sql
definiert sein. SQL-basierte PDTs, die mit dem Parameter sql_create
oder create_process
definiert sind, können nicht inkrementell erstellt werden.
Dies liegt daran, dass Looker einen INSERT- oder MERGE-Befehl verwendet, um die Inkremente für einen inkrementellen PDT zu erstellen. Die abgeleitete Tabelle kann nicht mit benutzerdefinierten DDL-Anweisungen (Data Definition Language) definiert werden, da Looker nicht ermitteln kann, welche DDL-Anweisungen zum Erstellen eines genauen Schritts erforderlich wären.