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 für Dataform definieren, die in BigQuery ausgeführt werden sollen.
Hinweise
Rufen Sie in der Google Cloud Console die Seite Dataform auf.
Wählen Sie ein Repository aus oder erstellen Sie ein Repository.
Wählen Sie einen Entwicklungsarbeitsbereich aus oder erstellen Sie einen.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Dataform Editor (roles/dataform.editor
) für Arbeitsbereiche zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Definieren eines benutzerdefinierten SQL-Vorgangs benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Möglicherweise können Sie die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Datei für die Definition eines benutzerdefinierten Vorgangs erstellen
Speichern Sie benutzerdefinierte SQLX-Dateien mit 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
.sqlx
nachdefinitions/
ein. Beispiel:definitions/sample-operation.sqlx
Dateinamen dürfen nur Ziffern, Buchstaben, Bindestriche und Unterstriche enthalten.
Klicken Sie auf Datei erstellen.
Benutzerdefinierten SQL-Vorgang definieren
Sie können einen benutzerdefinierten SQL-Vorgang in der SQLX-Datei von type: operations
definieren.
Sie können jede BigQuery-SQL-Anweisung in eine operations
-Datei schreiben.
Dataform führt Ihre benutzerdefinierten SQL-Vorgänge ohne Änderungen 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 ausgeführte SQL, indem alle Vorgänge mit einem Semikolon ;
zusammengeführt werden.
Wenn Sie bei Verwendung des Open-Source-Dataform-Frameworks mit einem anderen Data Warehouse als BigQuery mehrere benutzerdefinierte SQL-Vorgänge definieren möchten, 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 den SQL-Vorgang außerhalb des
config
-Blocks.Optional: Klicken Sie auf Format.
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 eine Ansicht manuell erstellt wird:
config { type: "operations" }
CREATE OR REPLACE VIEW dataset.table AS (SELECT 1 AS TEST)
Referenzierbare Ausgabetabelle erstellen
Sie können manuell eine Tabelle in einem benutzerdefinierten SQL-Vorgang erstellen, auf den Sie in anderen Skripts verweisen können. Wenn Sie eine Tabelle erstellen möchten, die anderen Skripts zur Verfügung steht, müssen Sie deklarieren, dass der Vorgang eine Ausgabe hat.
Damit der Name der Ausgabetabelle mit dem Namen der Datei operations
übereinstimmt, können Sie die Funktion self
im Vorgang CREATE
verwenden.
So erstellen Sie eine Tabelle in einem benutzerdefinierten Vorgang und stellen sie anderen Skripts zur Verfügung:
- Wählen Sie in Ihrem Entwicklungsarbeitsbereich die SQLX-Datei für die Definition benutzerdefinierter Vorgänge aus.
Geben Sie in der SQLX-Datei das folgende Code-Snippet ein:
config { type: "operations", hasOutput: true }
Optional: Schreiben Sie einen SQL-
CREATE
-Vorgang mit der Funktionself
im folgenden Format, um den Namen der Ausgabetabelle mit dem Namen der Datei abzugleichen:CREATE OR REPLACE TABLE ${self()} AS (CUSTOM_SQL_QUERY)
Ersetzen Sie CUSTOM_SQL_QUERY durch die SQL-
SELECT
-Anweisung der Tabellendefinition.Optional: Klicken Sie auf Format.
Auf eine benutzerdefinierte Ausgabetabelle eines SQL-Vorgangs verweisen
- Wenn Sie in der SQLX-Definition einer anderen Tabelle auf eine Ausgabetabelle eines benutzerdefinierten SQL-Vorgangs verweisen möchten, geben Sie den Dateinamen der Ausgabetabelle in die Funktion
ref
ein.
Das folgende Codebeispiel zeigt einen benutzerdefinierten SQL-Vorgang in einer custom_SQL_operation_table.sqlx
-Datei, mit der 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-Tabellendefinitionsdatei auf custom\_SQL\_operation\_table table
verwiesen wird:
config { type: "table" }
SELECT * FROM ${ref("custom_SQL_operation_table")}
Leere Tabelle erstellen
Sie können eine leere Tabelle erstellen, damit ein anderer Dienst sie mit Daten füllen kann. Mit der Funktion CREATE TABLE
können Sie eine leere Tabelle in einem benutzerdefinierten SQL-Vorgang erstellen. Damit Sie in anderen SQL-Workflow-Objektdefinitionen (z. B. Tabellen und Ansichten) auf die leere Tabelle verweisen können, können Sie das Attribut hasOutput:true
in den Block config
des Vorgangs für leere Tabellen einfügen.
- Zum Erstellen einer leeren Tabelle verwenden Sie die Funktion
CREATE TABLE
in einertype: "operations"
-Datei im folgenden Format:
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 SQL-Workflow-Objekten 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 SQL-Workflows mit JavaScript erstellen.
- Informationen zum manuellen Auslösen von Ausführungen finden Sie unter Ausführung auslösen.
- Informationen zum Verwenden von BigQuery-DML finden Sie unter Datenbearbeitungssprache (DML) verwenden.
- Weitere Informationen zur
self
-Funktion und anderen integrierten Dataform-Funktionen finden Sie unter Dataform API.