In diesem Dokument erfahren Sie, wie Sie mithilfe von JavaScript SQL-Workflowelemente in Dataform. Sie könnten JavaScript über Dataform Core verwenden um ähnliche Elemente wiederholt in Ihrem Workflow zu erstellen.
Workflows in Dataform mit JavaScript entwickeln
Mit Dataform Core erstellen Sie SQL-Workflowaktionen mit SQLX und JavaScript. Mit JavaScript können Sie ähnliche Aktionen in Ihrem Workflow wiederholt erstellen. Zum Beispiel haben Sie kann für jede Tabelle in Ihrem Workflow eine Ansicht erstellen, in der bestimmte Nutzer-IDs entfernt wurden.
Mit dem folgenden JavaScript-Codebeispiel können Sie eine Ansicht jeder Tabelle erstellen, wobei
der Wert des Felds user_id
entspricht keinem der Werte im
Liste blocked_user_ids
:
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 dem Namen
user_events_blocked_removed
, user_settings_blocked_removed
und
user_logs_blocked_removed
enthalten, die keine der blockierten Nutzer-IDs enthalten.
Sie können mehrere Aktionen in einer JavaScript-Datei mit Globale Dataform-Methoden und beliebigen JavaScript-ES5-Code wie als Schleifen und Konstanten.
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
Um die Berechtigungen zu erhalten, die Sie zum Entwickeln eines SQL-Workflows mit JavaScript benötigen,
bitten Sie Ihren Administrator, Ihnen
IAM-Rolle Dataform Editor (roles/dataform.editor
) für Arbeitsbereiche.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Sie können 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
definitions/
-Verzeichnis. So erstellen Sie eine neue JavaScript-Datei in der definitions/
führen Sie die folgenden Schritte aus:
Klicken Sie im Bereich Dateien neben
definitions/
auf das Symbol Mehr aus.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 ein. der Datei gefolgt von.js
. 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
Mit den folgenden globalen Dataform-Methoden können Sie SQL-Code Workflow-Objekte mit Dataform:
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 Eigenschaften, mit denen Sie die Methode erstelltes Objekt. Weitere Informationen zu globalen Methoden und ihren Eigenschaften finden Sie unter Referenz zu Dataform Core
In der Methode publish()
, mit der eine Tabelle erstellt wird, können Sie Tabellenattribute festlegen
indem Sie sie als zweites Methodenargument übergeben.
Um Tabellenattribute als zweites Argument von publish()
zu übergeben,
führen Sie folgende Schritte aus:
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 hinzu. im folgenden Format:method("first_method_argument", { property1: "property1_value", property2: "property2_value", property3: "property3_value", });
Optional: Klicken Sie auf Format.
Das folgende Codebeispiel zeigt, wie Attribute für die Methode publish()
festgelegt werden
indem Sie die Eigenschaften 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 auf beliebige einzuschließende Funktionen, Makros oder Konstanten in einem JavaScript-Code -Datei. 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 einschließenden Datei. Dataform speichert solche Dateien im enthält das Verzeichnis.
Referenz-Includes der obersten Ebene
- Um auf eine Einschlussdatei der obersten Ebene zu verweisen, verweisen Sie auf den Dateinamen, wenn die Deklaration der Variablen.
Im folgenden Codebeispiel wird auf serviceName
und serviceId
verwiesen.
Variablen aus der Datei includes/service.js
:
const {serviceName, serviceId} = service;
Verschachtelte Referenz-Includes
Geben Sie den Dateinamen in das JavaScript-Code-Snippet eine Funktion erfordern.
Im folgenden Codebeispiel wird auf serviceName
und serviceId
verwiesen.
Variablen aus der Datei includes/allServices/service.js
:
const {serviceName, serviceId} = require("includes/allServices/service.js");
Dataform-Abfragefunktionen in JavaScript-Methoden verwenden
Dataform bietet eine Reihe von
integrierten Funktionen, die Sie
innerhalb von Abfragen, wie z. B. ref
und self
. Weitere Informationen zu
Integrierte Dataform-Funktionen, siehe
Dataform API-Referenz
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 kontextierbares Argument in Graviszeichen `` ein.
Geben Sie im kontextfähigen Argument die Abfragefunktion mit ihrem Parameter als Kontextobjekt.
Optional: Klicken Sie auf Format.
Das folgende Codebeispiel zeigt die Abfragefunktion ref
, eingebunden in ein
Kontextierbares Argument der Veröffentlichungsmethode:
publish("example").query(ctx => `SELECT * FROM ${ctx.ref("other_table")}`);
SQL-Workflow-Datenquelle mit JavaScript deklarieren
Mit der folgenden Methode können Sie mehrere Datenquellen in einer JavaScript-Deklarationsdatei angeben: mit der Dataform-Deklaration JavaScript-Methode an. Weitere Informationen zu Deklarierungsmethode finden Sie in der Dataform Core-Referenz. Weitere Informationen Informationen zu Datenquellen in Dataform finden Sie unter Deklarieren Sie eine Datenquelle.
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 enthält die DatenquelleBIGQUERY_SCHEMA
: das BigQuery-Dataset, in dem der externe Beziehung bestehtRELATION_NAME
: der Name der Beziehung, die Sie später verwenden können um auf die Datenquelle in Dataform zu verweisen
Wenn Sie eine weitere Datenquelle in derselben Datei deklarieren möchten, fügen Sie eine zusätzliche
declare
hinzu hinzufügen.Optional: Klicken Sie auf Format.
Tabelle mit JavaScript definieren
Sie können eine Tabelle mit dem Dataform-JavaScript-publish
erstellen.
. Weitere Informationen zur Veröffentlichungsmethode finden Sie in der
Dataform-Kernreferenz.
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.SELECT_QUERY
durch eine SQL-SELECT-Anweisung ersetzen Definition der Tabelle.
Um den Tabellentyp festzulegen, fügen Sie Tabellenabhängigkeiten und eine Tabellenbeschreibung hinzu, Legen Sie Objekteigenschaften der Methode
publish
fest.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
Sie können manuelle SQL-Assertions in einer JavaScript-Datei mit der Methode Dataform-Assertion-JavaScript-Methode. 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 Zeilen zurückgibt wenn sie ausgeführt wird, schlägt die Assertion fehl. Sie können mehrere Assertions in einer erstellen JavaScript-Datei.
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 Ihres benutzerdefinierten Elements. Assertion beruhen.Ersetzen Sie
CUSTOM_ASSERTION_QUERY
durch Ihren SQL-Code. Assertion-Abfrage ausführen.
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,
Wert in source_table
ist NULL
:
assert("assertion1").query(ctx => "SELECT * FROM source_table WHERE value IS NULL");
Benutzerdefinierte SQL-Vorgänge mit JavaScript definieren
Sie können benutzerdefinierte SQL-Vorgänge in einer JavaScript-Datei mit der Methode Dataform bedient die JavaScript-Methode. Weitere Informationen zu SQL-Vorgänge in Dataform erstellen, siehe 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 Elements. .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,
fügt eine einzelne neue Zeile in some_table
ein und legt test_column
der neuen Zeile fest
an 2
:
operate("operation1").queries("INSERT INTO some_table (test_column) VALUES (2)");
Nächste Schritte
- Weitere Informationen zu den Dataform-JavaScript-Methoden und -Integration Abfragefunktionen finden Sie in der Dataform-Kernreferenz.
- Weitere Informationen zum Entwickeln in Dataform mit JavaScript finden Sie unter Einführung in JavaScript in Dataform.