Dataform-SQL-Workflows mit JavaScript erstellen

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

  1. Öffnen Sie in der Google Cloud Console die Seite Dataform.

    Zu Dataform

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

  3. 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:

  1. Klicken Sie im Bereich Dateien neben definitions/ auf das Symbol Mehr aus.

  2. Klicken Sie auf Datei erstellen.

  3. Führen Sie im Bereich Neue Datei erstellen die folgenden Schritte aus:

    1. 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.

    2. Klicken Sie auf Datei erstellen.

Objekteigenschaften des Dataform-SQL-Workflows mit JavaScript festlegen

Mit den folgenden globalen Dataform-Methoden können Sie SQL- 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:

  1. Maximieren Sie im Entwicklungsarbeitsbereich im Bereich Dateien definitions/.

  2. Wählen Sie eine JavaScript-Datei aus.

  3. 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",
     });
    
  4. 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:

  1. Maximieren Sie im Entwicklungsarbeitsbereich im Bereich Dateien definitions/.

  2. Wählen Sie eine JavaScript-Datei aus.

  3. Geben Sie in der Datei eine globale Dataform-JavaScript-Methode ein.

  4. Geben Sie in der Methode ein kontextlesbares ctx-Argument ein.

  5. Optional: Wenn Sie JavaScript-Vorlagenstrings verwenden, umschließen Sie das kontextierbares Argument in Graviszeichen `` ein.

  6. Geben Sie im kontextfähigen Argument die Abfragefunktion mit ihrem Parameter als Kontextobjekt.

  7. 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:

  1. Maximieren Sie im Entwicklungsarbeitsbereich im Bereich Dateien die Definitionen/.

  2. Wählen Sie eine JavaScript-Datei aus.

  3. 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 Datenquelle
    • BIGQUERY_SCHEMA: das BigQuery-Dataset, in dem der externe Beziehung besteht
    • RELATION_NAME: der Name der Beziehung, die Sie später verwenden können um auf die Datenquelle in Dataform zu verweisen
  4. Wenn Sie eine weitere Datenquelle in derselben Datei deklarieren möchten, fügen Sie eine zusätzliche declare hinzu hinzufügen.

  5. 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:

  1. Maximieren Sie im Entwicklungsarbeitsbereich im Bereich Dateien definitions/.

  2. Wählen Sie eine JavaScript-Datei aus.

  3. Geben Sie in die Datei das folgende Code-Snippet ein:

     publish("TABLE_NAME").query(ctx => "SELECT_QUERY");
    
    1. Ersetzen Sie TABLE_NAME durch den Namen der Tabelle.

    2. SELECT_QUERY durch eine SQL-SELECT-Anweisung ersetzen Definition der Tabelle.

  4. Um den Tabellentyp festzulegen, fügen Sie Tabellenabhängigkeiten und eine Tabellenbeschreibung hinzu, Legen Sie Objekteigenschaften der Methode publish fest.

  5. Um eine weitere Tabelle in derselben Datei zu definieren, wiederholen Sie Schritt 3 und Schritt 4.

  6. 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:

  1. Maximieren Sie im Entwicklungsarbeitsbereich im Bereich Dateien definitions/.

  2. Wählen Sie eine JavaScript-Datei aus.

  3. Geben Sie in die Datei das folgende Code-Snippet ein:

     assert("ASSERTION_NAME").query(ctx => "CUSTOM_ASSERTION_QUERY");
    
    1. Ersetzen Sie ASSERTION_NAME durch den Namen Ihres benutzerdefinierten Elements. Assertion beruhen.

    2. Ersetzen Sie CUSTOM_ASSERTION_QUERY durch Ihren SQL-Code. Assertion-Abfrage ausführen.

  4. Wiederholen Sie Schritt 3, um eine weitere Assertion in derselben Datei zu erstellen.

  5. 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:

  1. Maximieren Sie im Entwicklungsarbeitsbereich im Bereich Dateien definitions/.

  2. Wählen Sie eine JavaScript-Datei aus.

  3. Geben Sie in die Datei das folgende Code-Snippet ein:

     operate("OPERATION_NAME").queries(ctx => "CUSTOM_SQL_QUERY");
    
    1. Ersetzen Sie OPERATION_NAME durch den Namen des benutzerdefinierten Elements. .

    2. Ersetzen Sie CUSTOM_SQL_QUERY durch Ihre benutzerdefinierte SQL-Abfrage.

  4. Um einen weiteren benutzerdefinierten SQL-Vorgang in derselben Datei zu definieren, wiederholen Sie Schritt 3.

  5. 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