In diesem Dokument erfahren Sie, wie Sie mit JavaScript SQL-Workflow-Elemente in Dataform erstellen. Sie könnten JavaScript statt Dataform Core verwenden, um ähnliche Elemente in Ihrem Workflow wiederholt zu erstellen.
Workflows in Dataform mit JavaScript entwickeln
Mit Dataform Core können Sie SQL-Workflowaktionen mit SQLX und JavaScript erstellen. Mit JavaScript können Sie ähnliche Aktionen in Ihrem Workflow wiederholt erstellen. Beispielsweise haben Sie die Möglichkeit, für jede Tabelle in Ihrem Workflow eine Ansicht zu erstellen, in der bestimmte Nutzer-IDs entfernt werden.
Mit dem folgenden JavaScript-Codebeispiel können Sie eine Ansicht jeder Tabelle erstellen, in der der Wert des Felds user_id
keinem der Werte in der Liste blocked_user_ids
entspricht:
const tableNames = ["user_events", "user_settings", "user_logs"];
tableNames.forEach(tableName => {
publish(tableName + "_blocked_removed").query(
ctx => `
SELECT * FROM ${ctx.ref(tableName)}
WHERE user_id NOT IN (
SELECT user_id
FROM ${ctx.ref("blocked_user_ids")}
)`
);
});
In diesem Codebeispiel werden drei Ansichten mit den Namen user_events_blocked_removed
, user_settings_blocked_removed
und user_logs_blocked_removed
erstellt, die keine der blockierten Nutzer-IDs enthalten.
Sie können in einer JavaScript-Datei mit globalen Dataform-Methoden und beliebigem JavaScript ES5-Code, z. B. Schleifen und Konstanten, mehrere Aktionen erstellen.
In Dataform können Sie mit JavaScript die folgenden Aktionen definieren:
Hinweise
Öffnen Sie in der Google Cloud Console die Seite Dataform.
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, damit Sie die Berechtigungen erhalten, die Sie zum Entwickeln eines SQL-Workflows mit JavaScript 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.
JavaScript-Datei in Dataform erstellen
Speichern Sie JavaScript-Dateien für Definitionen und Datenquellendeklarationen im Verzeichnis definitions/
. So erstellen Sie eine neue JavaScript-Datei im Verzeichnis definitions/
:
Klicken Sie im Bereich Dateien neben
definitions/
auf das -Menü Mehr.Klicken Sie auf Datei erstellen.
Führen Sie im Bereich Neue Datei erstellen die folgenden Schritte aus:
Geben Sie im Feld Dateipfad hinzufügen nach
definitions/
den Namen der Datei gefolgt von.js
ein. Beispiel:definitions/definitions.js
.Dateinamen dürfen nur Ziffern, Buchstaben, Bindestriche und Unterstriche enthalten.
Klicken Sie auf Datei erstellen.
Objekteigenschaften des Dataform-SQL-Workflows mit JavaScript festlegen
Sie können die folgenden globalen Dataform-Methoden verwenden, um SQL-Workflow-Objekte mit Dataform zu erstellen:
declare
wird zum Deklarieren einer Datenquelle verwendet.publish
. Wird zum Definieren einer Tabelle verwendet.assert
. Wird zum Erstellen einer Assertion verwendet.operate
: Wird zum Definieren eines benutzerdefinierten SQL-Vorgangs verwendet.
Jede der globalen Methoden enthält Attribute, mit denen Sie das erstellte Objekt konfigurieren können. Weitere Informationen zu globalen Methoden und ihren Eigenschaften finden Sie in der Dataform Core-Referenz.
In der Methode publish()
, mit der eine Tabelle erstellt wird, können Sie Tabellenattribute festlegen, indem Sie sie als zweites Methodenargument übergeben.
So übergeben Sie Tabellenattribute als zweites Argument von publish()
:
Maximieren Sie im Entwicklungsarbeitsbereich im Bereich Dateien
definitions/
.Wählen Sie eine JavaScript-Datei aus.
Fügen Sie in der Datei der Methode
publish()
Tabellenattribute im folgenden Format hinzu:method("first_method_argument", { property1: "property1_value", property2: "property2_value", property3: "property3_value", });
Optional: Klicken Sie auf Format.
Das folgende Codebeispiel zeigt, wie Sie Attribute für die Methode publish()
festlegen, indem Sie die Attribute als zweites Argument der Methode übergeben:
publish("table1", {
type: "table",
dependencies: ["other_table"],
description: {
"Value is 1"
}
}).query(ctx => "SELECT 1 AS test");
Referenz-Includes in einer JavaScript-Datei
Sie können in einer JavaScript-Datei auf beliebige einzuschließende Funktionen, Makros oder Konstanten verweisen. Weitere Informationen zu Einbindungen in Dataform finden Sie unter Variablen und Funktionen mit JavaScript-Includes wiederverwenden.
Die Syntax für Verweis-Includes in einer JavaScript-Datei hängt vom Speicherort der include-Datei ab. Dataform speichert solche Dateien im Verzeichnis „Includes“.
Referenz-Includes der obersten Ebene
- Verweisen Sie beim Deklarieren der Variablen auf den Dateinamen, um auf eine Einbindungsdatei der obersten Ebene zu verweisen.
Im folgenden Codebeispiel wird auf die Variablen serviceName
und serviceId
aus der Datei includes/service.js
verwiesen:
const {serviceName, serviceId} = service;
Verschachtelte Referenz-Includes
Geben Sie den Dateinamen in der JavaScript-require-Funktion ein, um auf eine verschachtelte include-Datei zu verweisen.
Im folgenden Codebeispiel wird auf die Variablen serviceName
und serviceId
aus der Datei includes/allServices/service.js
verwiesen:
const {serviceName, serviceId} = require("includes/allServices/service.js");
Dataform-Abfragefunktionen in JavaScript-Methoden verwenden
Dataform bietet eine Reihe von integrierten Funktionen, die Sie in Abfragen verwenden können, z. B. ref
und self
. Weitere Informationen zu den integrierten Dataform-Funktionen finden Sie in der Referenz zur Dataform API.
So verwenden Sie eine integrierte Abfragefunktion in einer JavaScript-Methode:
Maximieren Sie im Entwicklungsarbeitsbereich im Bereich Dateien
definitions/
.Wählen Sie eine JavaScript-Datei aus.
Geben Sie in der Datei eine globale Dataform-JavaScript-Methode ein.
Geben Sie in der Methode ein kontextlesbares
ctx
-Argument ein.Optional: Wenn Sie JavaScript-Vorlagenstrings verwenden, umschließen Sie das kontextfähige Argument in Graviszeichen ``.
Geben Sie im kontextfähigen Argument die Abfragefunktion mit ihrem Parameter als Kontextobjekt ein.
Optional: Klicken Sie auf Format.
Das folgende Codebeispiel zeigt die Abfragefunktion ref
, die in ein kontextlesbares Argument der Veröffentlichungsmethode eingebettet ist:
publish("example").query(ctx => `SELECT * FROM ${ctx.ref("other_table")}`);
SQL-Workflow-Datenquelle mit JavaScript deklarieren
Mit der Dataform-Methode zur Deklaration von JavaScript können Sie mehrere Datenquellen in einer JavaScript-Deklarationsdatei angeben. Weitere Informationen zur Deklarationsmethode finden Sie in der Dataform Core-Referenz. Weitere Informationen zu Datenquellen in Dataform finden Sie unter Datenquellen deklarieren.
So deklarieren Sie eine Datenquelle in einer JavaScript-Datei:
Maximieren Sie im Entwicklungsarbeitsbereich im Bereich Dateien die Definitionen/.
Wählen Sie eine JavaScript-Datei aus.
Geben Sie in die Datei das folgende Code-Snippet ein:
declare({ database: "DATABASE_PROJECT_ID", schema: "BIGQUERY_SCHEMA", name: "RELATION_NAME", });
Ersetzen Sie Folgendes:
DATABASE_PROJECT_ID
: die Projekt-ID des Projekts, das die Datenquelle enthältBIGQUERY_SCHEMA
: das BigQuery-Dataset, in dem die externe Beziehung bestehtRELATION_NAME
: der Name der Beziehung, mit der Sie später auf die Datenquelle in Dataform verweisen können
Wenn Sie eine weitere Datenquelle in derselben Datei deklarieren möchten, fügen Sie der Datei einen zusätzlichen
declare
-Block hinzu.Optional: Klicken Sie auf Format.
Tabelle mit JavaScript definieren
Sie können eine Tabelle mit der Dataform-JavaScript-Methode publish
erstellen. Weitere Informationen zur Veröffentlichungsmethode finden Sie in der Dataform Core-Referenz.
Sie können die folgenden Tabellentypen definieren: Tabelle, inkrementelle Tabelle und Ansicht. Weitere Informationen zum Definieren von Tabellen in Dataform finden Sie unter Tabelle erstellen.
So definieren Sie eine Tabelle in einer JavaScript-Datei:
Maximieren Sie im Entwicklungsarbeitsbereich im Bereich Dateien
definitions/
.Wählen Sie eine JavaScript-Datei aus.
Geben Sie in die Datei das folgende Code-Snippet ein:
publish("TABLE_NAME").query(ctx => "SELECT_QUERY");
Ersetzen Sie
TABLE_NAME
durch den Namen der Tabelle.Ersetzen Sie
SELECT_QUERY
durch eine SQL-SELECT-Anweisung, die die Tabelle definiert.
Legen Sie Objekteigenschaften der
publish
-Methode fest, um den Tabellentyp festzulegen, Tabellenabhängigkeiten hinzuzufügen und eine Tabellenbeschreibung hinzuzufügen.Um eine weitere Tabelle in derselben Datei zu definieren, wiederholen Sie Schritt 3 und Schritt 4.
Optional: Klicken Sie auf Format.
Manuelle Dataform-Assertions mit JavaScript definieren
Mit der Dataform-Assertion-JavaScript-Methode können Sie manuelle SQL-Assertions in einer JavaScript-Datei erstellen. Weitere Informationen zur Assertion-Methode finden Sie in der Dataform Core-Referenz.
Eine manuelle Assertion-SQL-Abfrage muss null Zeilen zurückgeben. Wenn die Abfrage bei der Ausführung Zeilen zurückgibt, schlägt die Assertion fehl. Sie können mehrere Assertions in einer JavaScript-Datei erstellen.
Weitere Informationen zu Assertions in Dataform finden Sie unter Tabellen mit Assertions testen.
So erstellen Sie eine manuelle Assertion in einer JavaScript-Datei:
Maximieren Sie im Entwicklungsarbeitsbereich im Bereich Dateien
definitions/
.Wählen Sie eine JavaScript-Datei aus.
Geben Sie in die Datei das folgende Code-Snippet ein:
assert("ASSERTION_NAME").query(ctx => "CUSTOM_ASSERTION_QUERY");
Ersetzen Sie
ASSERTION_NAME
durch den Namen der benutzerdefinierten Assertion.Ersetzen Sie
CUSTOM_ASSERTION_QUERY
durch Ihre SQL-Assertion-Abfrage.
Wiederholen Sie Schritt 3, um eine weitere Assertion in derselben Datei zu erstellen.
Optional: Klicken Sie auf Format.
Das folgende Codebeispiel zeigt eine JavaScript-Assertion, die behauptet, dass kein Wert in source_table
NULL
ist:
assert("assertion1").query(ctx => "SELECT * FROM source_table WHERE value IS NULL");
Benutzerdefinierte SQL-Vorgänge mit JavaScript definieren
Mit der JavaScript-Methode von Dataform können Sie benutzerdefinierte SQL-Vorgänge in einer JavaScript-Datei definieren. Weitere Informationen zu benutzerdefinierten SQL-Vorgängen in Dataform finden Sie unter Benutzerdefinierte SQL-Vorgänge hinzufügen.
So definieren Sie einen benutzerdefinierten SQL-Vorgang mit JavaScript:
Maximieren Sie im Entwicklungsarbeitsbereich im Bereich Dateien
definitions/
.Wählen Sie eine JavaScript-Datei aus.
Geben Sie in die Datei das folgende Code-Snippet ein:
operate("OPERATION_NAME").queries(ctx => "CUSTOM_SQL_QUERY");
Ersetzen Sie
OPERATION_NAME
durch den Namen des benutzerdefinierten Vorgangs.Ersetzen Sie
CUSTOM_SQL_QUERY
durch Ihre benutzerdefinierte SQL-Abfrage.
Um einen weiteren benutzerdefinierten SQL-Vorgang in derselben Datei zu definieren, wiederholen Sie Schritt 3.
Optional: Klicken Sie auf Format.
Das folgende Codebeispiel zeigt einen benutzerdefinierten SQL-Vorgang in einer JavaScript-Datei, der eine einzelne neue Zeile in some_table
einfügt und test_column
der neuen Zeile auf 2
festlegt:
operate("operation1").queries("INSERT INTO some_table (test_column) VALUES (2)");
Nächste Schritte
- Weitere Informationen zu den Dataform-JavaScript-Methoden und den integrierten Abfragefunktionen finden Sie in der Dataform Core-Referenz.
- Weitere Informationen zum Entwickeln in Dataform mit JavaScript finden Sie unter Einführung in JavaScript in Dataform.