Vorgänge erstellen

In diesem Dokument erfahren Sie, wie Sie benutzerdefinierte SQL-Vorgänge in einer dedizierten SQLX-Datei definieren.

Dataform kann benutzerdefinierte SQL-Vorgänge ausführen, die nicht in das Dataform-Modell zum Veröffentlichen einer Tabelle oder zum Schreiben einer Assertion passen. Sie können benutzerdefinierte SQL-Befehle definieren, die von Dataform in BigQuery ausgeführt werden sollen.

Hinweis

  1. Rufen Sie in der Google Cloud Console die Seite Dataform auf.

    Seite „Dataform“ aufrufen

  2. Wählen Sie ein Repository aus oder erstellen Sie eines.

  3. Wählen Sie einen Entwicklungsarbeitsbereich aus oder erstellen Sie einen.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen für Arbeitsbereiche die IAM-Rolle Dataform Editor (roles/dataform.editor) zuzuweisen, damit Sie die Berechtigungen erhalten, die Sie zum Definieren eines benutzerdefinierten SQL-Vorgangs benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Datei für die Definition benutzerdefinierter Vorgänge erstellen

Speichern Sie SQLX-Dateien mit benutzerdefinierten Vorgangsdefinitionen im Verzeichnis definitions/. So erstellen Sie eine neue SQLX-Datei im Verzeichnis definitions/:

  1. Rufen Sie Ihren Entwicklungsarbeitsbereich auf.
  2. Klicken Sie im Bereich Dateien neben definitions/ auf das Menü Mehr.
  3. Klicken Sie auf Datei erstellen.
  4. Geben Sie im Feld Dateipfad hinzufügen den Namen der Datei gefolgt von .sqlx nach definitions/ ein. Beispiel: definitions/sample-operation.sqlx.

    Dateinamen dürfen nur Zahlen, Buchstaben, Bindestriche und Unterstriche enthalten.

  5. Klicken Sie auf Datei erstellen.

Benutzerdefinierten SQL-Vorgang definieren

Sie können einen benutzerdefinierten SQL-Vorgang in einer SQLX-Datei vom Typ type: operations definieren. In einer operations-Datei können Sie beliebige BigQuery-SQL-Anweisung schreiben. Dataform führt Ihre benutzerdefinierten SQL-Vorgänge unverändert in BigQuery aus.

Sie können mehrere benutzerdefinierte SQL-Vorgänge in einer SQLX-Datei definieren. BigQuery führt alle Vorgänge in einer Datei im selben Kontext aus und erstellt die SQL-Ausführung, indem alle Vorgänge mit einem Semikolon (;) verknüpft werden.

Wenn Sie mehrere benutzerdefinierte SQL-Vorgänge definieren möchten, wenn Sie das Open-Source Framework Dataform mit einem anderen Data Warehouse als BigQuery verwenden, trennen Sie die Vorgänge mit ---.

So definieren Sie einen benutzerdefinierten SQL-Vorgang in einer dedizierten SQLX-Datei:

  1. Wählen Sie in Ihrem Entwicklungsarbeitsbereich die SQLX-Datei für die Definition benutzerdefinierter Vorgänge aus.
  2. Geben Sie in die Datei das folgende Code-Snippet ein:

    config { type: "operations" }
    
  3. Schreiben Sie Ihren SQL-Vorgang außerhalb des config-Blocks.

  4. Optional: Klicken Sie auf Formatieren.

Das folgende Codebeispiel zeigt mehrere benutzerdefinierte SQL-Vorgänge, die in einer operations-Datei definiert sind:

config { type: "operations" }

DELETE FROM dataset.table WHERE country = 'GB';

DELETE FROM dataset.table WHERE country = 'FR';

Das folgende Codebeispiel zeigt einen benutzerdefinierten SQL-Vorgang, mit dem manuell eine Ansicht erstellt wird:

config { type: "operations" }
CREATE OR REPLACE VIEW dataset.table AS (SELECT 1 AS TEST)

Referenzierbare Ausgabetabelle erstellen

Sie können in einem benutzerdefinierten SQL-Vorgang manuell eine Tabelle erstellen, auf die Sie in anderen Skripts verweisen können. Damit eine Tabelle für andere Skripts verfügbar ist, müssen Sie deklarieren, dass der Vorgang eine Ausgabe hat.

Damit der Name der Ausgabetabelle mit dem Namen der operations-Datei übereinstimmt, können Sie die Funktion self im Vorgang CREATE verwenden.

So erstellen Sie eine Tabelle in einem benutzerdefinierten Vorgang und machen sie für andere Skripts verfügbar:

  1. Wählen Sie in Ihrem Entwicklungsarbeitsbereich die SQLX-Datei für die Definition benutzerdefinierter Vorgänge aus.
  2. Geben Sie in die SQLX-Datei das folgende Code-Snippet ein:

    config {
     type: "operations",
     hasOutput: true
    }
    
  3. Um den Namen der Ausgabetabelle mit dem Namen der Datei abzugleichen, schreiben Sie einen SQL-Vorgang CREATE mit der Funktion self im folgenden Format:

    CREATE OR REPLACE TABLE ${self()} AS (CUSTOM_SQL_QUERY)
    

    Ersetzen Sie CUSTOM_SQL_QUERY durch die SQL-Anweisung SELECT für die Tabellendefinition.

  4. Optional: Klicken Sie auf Formatieren.

Auf eine Ausgabetabelle eines benutzerdefinierten SQL-Vorgangs verweisen

  • Wenn Sie in einer SQLX-Definition einer anderen Tabelle auf eine Ausgabetabelle eines benutzerdefinierten SQL-Vorgangs verweisen möchten, geben Sie den Dateinamen der Ausgabetabelle in der Funktion ref ein.

Das folgende Codebeispiel zeigt einen benutzerdefinierten SQL-Vorgang in einer custom_SQL_operation_table.sqlx Datei, mit dem eine referenzierbare Tabelle namens custom_SQL_operation_table erstellt wird:

// filename is custom_SQL_operation_table.sqlx
config {
type: "operations",
hasOutput: true
}
CREATE OR REPLACE VIEW ${self()} AS (SELECT 1 AS TEST)

Das folgende Codebeispiel zeigt, wie in einer SQLX-Datei für die Tabellendefinition auf die custom\_SQL\_operation\_table table verwiesen wird:

config { type: "table" }
SELECT * FROM ${ref("custom_SQL_operation_table")}

Leere Tabelle erstellen

Möglicherweise möchten Sie eine leere Tabelle erstellen, damit ein anderer Dienst sie mit Daten füllen kann. Sie können eine leere Tabelle in einem benutzerdefinierten SQL-Vorgang mit der Funktion CREATE TABLE erstellen. Damit Sie in anderen Workflow-Aktionsdefinitionen, z. B. Tabellen und Ansichten, auf die leere Tabelle verweisen können, fügen Sie dem config-Block des Vorgangs für die leere Tabelle die Eigenschaft hasOutput:true hinzu.

  • Verwenden Sie die Funktion CREATE TABLE in einer type: "operations" Datei im folgenden Format, um eine leere Tabelle zu erstellen:
config {
  type: "operations",
  hasOutput: true  // optional, lets you reference the empty table
}

CREATE TABLE ${self()} (

)

Das folgende Codebeispiel zeigt einen benutzerdefinierten SQL-Vorgang, mit dem eine leere Tabelle mit einer Ganzzahl- und einer Stringspalte erstellt wird. Auf die erstellte leere Tabelle kann nicht von anderen Workflow-Aktionen verwiesen werden:

config {
  type: "operations"
}

CREATE TABLE ${self()} (
  x INT64,
  y STRING
)

Nächste Schritte