Nutzung
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 ;;
}
}
|
Hierarchie
create_process |
Standardwert
Keine
Akzeptiert
Einen oder mehrere sql_step-Unterparameter
|
Definition
Wenn Ihr Datenbankdialekt benutzerdefinierte Datendefinitionssprache (DDL)-Befehle verwendet, können Sie mit create_process persistente abgeleitete Tabellen (PDTs) erstellen. create_process definiert eine Liste von SQL-Anweisungen, die in der angegebenen Reihenfolge ausgeführt werden. Jede einzelne SQL-Anweisung wird mit dem Unterparameter sql_step angegeben. Jeder sql_step-Unterparameter kann eine beliebige gültige SQL-Abfrage enthalten. Sie können mehrere sql_step-Unterparameter definieren. Sie werden nacheinander in der angegebenen Reihenfolge ausgeführt. Looker gibt die Anweisungen in den sql_step-Unterparametern unverändert aus, ohne die übliche Fehlerkorrektur von Looker.
Einige Datenbankdialekte unterstützen beispielsweise nicht CREATE TABLE as SELECT als einzelne SQL-Anweisung, sondern erfordern separate SQL-Anweisungen. Daher können auf diesen Dialekten keine herkömmlichen SQL-basierten persistenten abgeleiteten Tabellen erstellt werden. Der Parameter create_process bietet eine alternative Möglichkeit zum Erstellen von PDTs, indem eine Liste separater SQL-Anweisungen erstellt wird, die nacheinander ausgeführt werden.
Sie können create_process auch verwenden, um Dialekte wie die prädiktiven BigQuery ML-Modelle für maschinelles Lernen von Google zu unterstützen.
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 einer abgeleiteten Tabelle mit create_process einen Index hinzufügen möchten, verwenden Sie einen sql_step-Parameter, um den SQL-Code für den Index anzugeben.
Für PDTs, die mit create_process definiert werden, können Sie keine der folgenden Parameter verwenden:
Beispiel
Erstellen Sie in zwei Schritten eine persistente abgeleitete Tabelle ctasless_customer_order_facts in einer MySQL-Datenbank. Geben Sie zuerst die SQL-Anweisung CREATE TABLE aus, die durch den ersten sql_step-Unterparameter definiert wird. Geben Sie als Zweites die SQL-Anweisung INSERT INTO mit einer SELECT-Anweisung aus, die durch den zweiten sql_step-Unterparameter 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
Substitutionsoperator ${SQL_TABLE_NAME}
Mit dem Substitutionsoperator ${SQL_TABLE_NAME} können Sie den berechneten Namen der erstellten PDT ersetzen. So wird sichergestellt, dass die SQL-Anweisung den PDT-Namen enthält, der im LookML-Parameter view angegeben ist.
create_processmuss eine Tabelle mit dem Namen erstellen, der durch den Substitutionsoperator${SQL_TABLE_NAME}angegeben wird. Andernfalls wird sie bei jedem Triggerprüfintervall, das in der Einstellung Datengruppe und PDT-Wartungszeitplan einer Verbindung angegeben ist, von Grund auf neu erstellt (Standardwert: fünf Minuten). Dies kann zu unerwartetem Abfragetraffic in Ihrer Datenbank oder Ihrem Data Warehouse führen.
Mit sql_create eine PDT in einem Schritt erstellen
Wenn Ihr Datenbankdialekt benutzerdefinierte DDL-Befehle erfordert und Sie eine PDT in einem Schritt erstellen möchten, können Sie mit sql_create eine vollständige SQL CREATE Anweisung definieren, die ausgeführt wird, um eine PDT in einem Schritt zu erstellen.
Mit create_process definierte Tabellen können nicht für inkrementelle PDTs verwendet werden
Damit eine SQL-basierte PDT als inkrementelle PDT verwendet werden kann, muss eine Abfrage mit dem Parameter sql definiert sein. SQL-basierte PDTs, die mit dem sql_create Parameter oder dem create_process Parameter definiert werden, können nicht inkrementell erstellt werden.
Das liegt daran, dass Looker einen INSERT- oder MERGE-Befehl verwendet, um die Inkremente für eine inkrementelle PDT zu erstellen. Die abgeleitete Tabelle kann nicht über benutzerdefinierte Datendefinitionssprache (DDL)-Anweisungen definiert werden, da Looker nicht in der Lage wäre zu bestimmen, welche Datendefinitionssprache (DDL)-Anweisungen für das Erstellen eines akkuraten Inkrements erforderlich wären.