Prozess erstellen

Nutzung

abgeleitete Tabelle: {
create_process: {
sql_step:
TABELLE ${SQL_TABLE_NAME}
(customer_id int(11),

Hierarchie
create_process
Standardwert
Keine

Akzeptiert
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.