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
Rufen Sie in der Google Cloud Console die Seite Dataform auf.
Wählen Sie ein Repository aus oder erstellen Sie eines.
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/:
- Rufen Sie Ihren Entwicklungsarbeitsbereich auf.
- Klicken Sie im Bereich Dateien neben
definitions/auf das Menü
Mehr. - Klicken Sie auf Datei erstellen.
Geben Sie im Feld Dateipfad hinzufügen den Namen der Datei gefolgt von
.sqlxnachdefinitions/ein. Beispiel:definitions/sample-operation.sqlx.Dateinamen dürfen nur Zahlen, Buchstaben, Bindestriche und Unterstriche enthalten.
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:
- Wählen Sie in Ihrem Entwicklungsarbeitsbereich die SQLX-Datei für die Definition benutzerdefinierter Vorgänge aus.
Geben Sie in die Datei das folgende Code-Snippet ein:
config { type: "operations" }Schreiben Sie Ihren SQL-Vorgang außerhalb des
config-Blocks.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:
- Wählen Sie in Ihrem Entwicklungsarbeitsbereich die SQLX-Datei für die Definition benutzerdefinierter Vorgänge aus.
Geben Sie in die SQLX-Datei das folgende Code-Snippet ein:
config { type: "operations", hasOutput: true }Um den Namen der Ausgabetabelle mit dem Namen der Datei abzugleichen, schreiben Sie einen SQL-Vorgang
CREATEmit der Funktionselfim folgenden Format:CREATE OR REPLACE TABLE ${self()} AS (CUSTOM_SQL_QUERY)Ersetzen Sie CUSTOM_SQL_QUERY durch die SQL-Anweisung
SELECTfür die Tabellendefinition.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
refein.
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 TABLEin einertype: "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
- Informationen zum Erstellen benutzerdefinierter SQL-Vorgänge mit JavaScript finden Sie unter Workflows ausschließlich mit JavaScript erstellen.
- Informationen zum manuellen Auslösen von Ausführungen finden Sie unter Ausführungen manuell auslösen.
- Informationen zur Verwendung von BigQuery-DML finden Sie unter Datenbearbeitungssprache (DML) verwenden.
- Weitere Informationen zur Funktion
selfund anderen integrierten Dataform Funktionen finden Sie in der Dataform API.