create_process

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_process muss 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.