JavaScript in Dataform verwenden

In diesem Dokument erfahren Sie, wie Sie mit JavaScript Workflows in Dataform entwickeln können. In diesem Dokument erfahren Sie auch, wie Sie mit JavaScript Workflowaktionen und JavaScript-Includes erstellen, um Code in Dataform wiederzuverwenden.

Mit Dataform-Core können Sie Workflow-Aktionen mit SQLX und JavaScript erstellen. Die Verwendung von JavaScript zusammen mit SQLX zum wiederholten Erstellen ähnlicher Elemente in Ihrem Workflow ist zwar optional, kann aber hilfreich sein. Mit JavaScript können Sie beispielsweise eine Ansicht jeder Tabelle in Ihrem Workflow erstellen, in der bestimmte Nutzer-IDs entfernt wurden. Sie können Workflow-Aktionen auch ausschließlich mit JavaScript entwickeln.

Hinweise

  1. Rufen Sie in der Google Cloud Console die Seite Dataform auf.

    Zu Dataform

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

  3. Wählen Sie einen Entwicklungsarbeitsbereich aus oder erstellen Sie einen.

Außerdem müssen Sie mit der JavaScript-Syntax und den folgenden JavaScript-Konzepten vertraut sein:

  • Variablen
  • Arrays
  • Bedingte Anweisungen
  • For-Schleifen
  • Maps
  • Funktionen
  • Objekte
  • Module exportieren und importieren

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Dataform Editor (roles/dataform.editor) für Arbeitsbereiche zuzuweisen, damit Sie die Berechtigungen erhalten, die Sie zum Entwickeln eines Workflows mit JavaScript und zum Wiederverwenden von Code mit JavaScript-Includes 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.

JavaScript-Code in eine SQLX-Datei einfügen

Sie können einer SQLX-Datei auf zwei Arten JavaScript-Code hinzufügen: inline oder in einem JavaScript-Block.

Sie können einen JavaScript-Block verwenden, um Funktionen oder Konstanten in einer SQLX-Datei zu definieren. Sie können Inline-JavaScript verwenden, um eine SQLX- oder SQL-Abfrage dynamisch zu ändern.

Das folgende Codebeispiel zeigt die integrierte Dataform Core-JavaScript-Funktion self, die inline zum post_operations-Block in einer SQLX-Datei hinzugefügt wurde:

config {type: "table"}

SELECT * FROM ...

post_operations {
  GRANT `roles/bigquery.dataViewer`
  ON
  TABLE ${self()}
  TO "group:allusers@example.com", "user:otheruser@example.com"
}

Im folgenden Codebeispiel wird eine Konstante gezeigt, die in einem JavaScript-Block definiert und inline in einer Abfrage in einer SQLX-Datei verwendet wird:

js {
  const columnName = "foo";
}

SELECT 1 AS ${columnName} FROM "..."

Code in einer einzelnen SQLX-Datei mit JavaScript-Kapselung wiederverwenden

Sie können JavaScript-Code wiederverwenden, um die Entwicklung in Dataform zu optimieren. Wenn Sie JavaScript-Konstanten und -Funktionen in einer einzelnen SQLX-Datei wiederverwenden möchten, können Sie sie in einem JavaScript-Block kapseln. Wenn Sie JavaScript-Code in einem einzelnen Dataform-Repository wiederverwenden möchten, können Sie Includes erstellen. Wenn Sie JavaScript-Code in mehreren Dataform-Repositories wiederverwenden möchten, können Sie ein Paket erstellen oder importieren.

Um sich wiederholende Teile von SQL-Code zu erstellen, die Sie in einer einzelnen SQLX-Datei wiederverwenden können, können Sie Funktionen und Konstanten in einem JavaScript-Block kapseln. Sie können Code, der in einem JavaScript-Block definiert ist, nur in der SQLX-Datei wiederverwenden, in der der Block definiert ist. Weitere Informationen finden Sie unter Dataform Core.

Im folgenden Codebeispiel werden eine Konstante und eine Funktion gezeigt, die in einem JavaScript-Block definiert und inline in einer Abfrage in einer SQLX-Datei verwendet werden:

js {
 const foo = 1;
 function bar(number){
     return number+1;
 }
}

select
 ${foo} as one,
 ${bar(foo)} as two

Code in einem einzelnen Repository mit „Includes“ wiederverwenden

Includes sind JavaScript-Konstanten oder -Funktionen, die für Ihr Repository global sind. Sie definieren Includes im Verzeichnis includes Ihres Repositorys. Anschließend können Sie sie in JavaScript- und SQLX-Dateien in Ihrem Repository wiederverwenden.

Das folgende Codebeispiel zeigt die Definition der Konstante launch_date in der Datei includes/constants.js:

// filename is includes/constants.js
const launch_date = "11.11.2011";
module.exports = { launch_date };

Im folgenden Codebeispiel wird die Konstante launch_date in einer Abfrage zur Tabellendefinition in einer SQLX-Datei referenziert:

config {type: "table"}

SELECT * FROM source_table WHERE date > ${constants.launch_date}

JavaScript-Datei für Includes erstellen

So erstellen Sie eine neue JavaScript-Datei im Verzeichnis includes/:

  1. Klicken Sie im Bereich Dateien neben includes/ auf das Dreipunkt-Menü  Mehr.

  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 includes/ den Namen der Datei gefolgt von .js ein. Beispiel: includes/constants.js

      Dateinamen dürfen nur Zahlen, Buchstaben, Bindestriche und Unterstriche enthalten.

    2. Klicken Sie auf Datei erstellen.

JavaScript-Konstante erstellen

So erstellen Sie eine Konstante, die Sie in Ihrem Projekt wiederverwenden können:

  1. Rufen Sie Ihren Entwicklungsarbeitsbereich auf.

  2. Maximieren Sie im Bereich Dateien die Option includes/.

  3. Erstellen oder wählen Sie eine JavaScript-Datei mit der Endung .js aus.

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

     const CONSTANT_NAME = CONSTANT_VALUE;
     module.exports = { CONSTANT_NAME };
    

    Ersetzen Sie Folgendes:

    • CONSTANT_NAME: der Name Ihrer Konstanten
    • CONSTANT_VALUE: der Wert Ihrer Konstanten
  5. Optional: Klicken Sie auf Formatieren.

Im folgenden Codebeispiel wird die Konstante PROJECT_ID in der Datei includes/constants.js definiert:

  // filename is includes/constants.js
  const PROJECT_ID = "my_project_name";
  module.exports = { PROJECT_ID };

Im folgenden Codebeispiel wird in einer Abfrage zur Tabellendefinition in einer SQLX-Datei auf die Konstante PROJECT_ID verwiesen:

  config { type: "table" }
  SELECT * FROM ${constants.PROJECT_ID}.my_schema_name.my_table_name

Das folgende Codebeispiel zeigt die vorherige Dataform Core-Tabellendefinitionsabfrage, die in SQL kompiliert wurde:

  SELECT * FROM my_project_name.my_schema_name.my_table_name

Benutzerdefinierte JavaScript-Funktion erstellen

So erstellen Sie eine benutzerdefinierte JavaScript-Funktion, die Sie in Ihrem gesamten Projekt wiederverwenden können:

  1. Rufen Sie Ihren Entwicklungsarbeitsbereich auf.

  2. Maximieren Sie im Bereich Dateien die Option includes/.

  3. Erstellen oder wählen Sie eine JavaScript-Datei mit der Endung .js aus.

  4. Schreiben Sie Ihre benutzerdefinierte JavaScript-Funktion in die Datei.

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

     module.exports = { FUNCTION_NAME }
    

    Ersetzen Sie FUNCTION_NAME durch den Namen Ihrer Funktion.

  6. Optional: Klicken Sie auf Formatieren.

Das folgende Codebeispiel zeigt eine benutzerdefinierte JavaScript-Funktion mit dem Namen renderScript, die in der Datei includes/functions.js gespeichert ist. Die Funktion generiert ein SQL-Script:

  function renderScript(table, dimensions, metrics) {
    return `
        select
        ${dimensions.map(field => `${field} as ${field}`).join(",")},
        ${metrics.map(field => `sum(${field}) as ${field}`).join(",\n")}
        from ${table}
        group by ${dimensions.map((field, i) => `${i + 1}`).join(", ")}
      `;
  }

  module.exports = { renderScript };

Im folgenden Codebeispiel sehen Sie, wie die benutzerdefinierte JavaScript-Funktion renderScript in einer Dataform Core-Tabellendefinitionsabfrage verwendet wird:

  config {
      type: "table",
      tags: ["advanced", "hourly"],
      disabled: true
  }

  ${functions.renderScript(ref("source_table"),
                                ["country", "device_type"],
                                ["revenue", "pageviews", "sessions"]
                                )}

Im folgenden Codebeispiel sehen Sie die vorherige Dataform Core-Tabellendefinitionsabfrage, die in SQL kompiliert wurde:

  select
    country as country,
    device_type as device_type,
    sum(revenue) as revenue,
    sum(pageviews) as pageviews,
    sum(sessions) as sessions

  from "dataform"."source_table"

  group by 1, 2

Include in einer SQLX-Datei referenzieren

Sie können in einer SQLX-Datei auf eine beliebige Include-Funktion oder -Konstante verweisen. Die Syntax für das Referenzieren von Includes hängt vom Speicherort der Include-Datei ab. Eine Includes-Datei der obersten Ebene befindet sich direkt im Verzeichnis includes/. Eine verschachtelte Include-Datei befindet sich in einem Unterverzeichnis von includes/.

Top-Level-Include in einer SQLX-Datei referenzieren

  • Wenn Sie in einer Dataform Core-Abfrage auf eine Include-Funktion oder -Konstante der obersten Ebene verweisen möchten, geben Sie den Dateinamen der Include-Definition ohne die Erweiterung .js gefolgt vom Namen des exportierten Objekts ein.

Im folgenden Codebeispiel wird in einer SQLX-Datei für die Tabellendefinition auf die Konstante firstDate verwiesen, die in der Datei includes/constants.js definiert ist:

  config {type: "table"}
  select * from source_table where date > ${constants.firstDate}

Auf ein verschachteltes Include in einer SQLX-Datei verweisen

Wenn Sie auf Includes verweisen möchten, die sich in Unterverzeichnissen von definitions befinden, importieren Sie sie mit der JavaScript-Funktion require und einem js {}-Block.

So verweisen Sie mit der JavaScript-Funktion require auf einen verschachtelten Include:

  1. Rufen Sie Ihren Entwicklungsarbeitsbereich auf.

  2. Maximieren Sie im Bereich Dateien die Option definitions/.

  3. Wählen Sie eine SQLX-Datei aus.

  4. Geben Sie im Block config das folgende Code-Snippet ein:

     js {
       var { VARIABLE_NAME } = require("SUBDIRECTORY_INCLUDE");
     }
    

    Ersetzen Sie Folgendes:

    • VARIABLE_NAME: der Name der Konstanten oder Funktion, die Sie importieren möchten
    • SUBDIRECTORY_INCLUDE: der Pfad der verschachtelten includes-Datei
  5. Optional: Klicken Sie auf Formatieren.

Im folgenden Codebeispiel wird in einer SQLX-Datei für die Tabellendefinition auf die Konstante firstDate verwiesen, die in der verschachtelten Datei includes/allConstants/constants.js definiert ist:

  config {type: "table"}
  js {
    var { firstDate } = require("includes/allConstants/constants");
  }
  select * from source_table where date > ${firstDate}

JavaScript-Include-Funktion mit der Dataform Core-Funktion ref verwenden

Wenn Sie eine JavaScript-Include-Funktion mit der Dataform Core-Funktion ref verwenden möchten, müssen Sie ref als Argument der JavaScript-Include-Funktion in einer SQLX-Datei übergeben.

Das folgende Codebeispiel zeigt die Datei includes/script_builder.js mit der JavaScript-Funktion renderScript, die Messwerte mit SUM zusammenfasst und nach Dimension gruppiert:

function renderScript(table, dimensions, metrics) {
  return `
      SELECT
      ${dimensions.map((field) => `${field} AS ${field}`).join(",\\n")},
      ${metrics.map((field) => `SUM(${field}) AS ${field}`).join(",\\n")}
      FROM ${table}
      GROUP BY ${dimensions.map((field, i) => `${i + 1}`).join(", ")}
    `;
}
module.exports = { renderScript };

Das folgende Codebeispiel zeigt die JavaScript-Funktion renderScript, die in der Datei definitions/stats_per_country_and_device.sqlx verwendet wird. Die Dataform Core-Funktion ref wird als Argument übergeben:

${script_builder.renderScript(
  ref("source_table"),
  ["country", "device_type"],
  ["revenue", "pageviews", "sessions"])}

Das folgende Codebeispiel zeigt die in SQL kompilierte definitions/stats_per_country_and_device.sqlx-Abfrage:

SELECT country AS country,
       device_type AS device_type,
       SUM(revenue) AS revenue,
       SUM(pageviews) AS pageviews,
       SUM(sessions) AS sessions
FROM my_schema.source_table
GROUP BY 1, 2

Weitere Informationen zur Dataform Core-Funktion ref finden Sie unter Dataform Core.

Code mit Paketen in mehreren Repositories wiederverwenden

Pakete sind Sammlungen von JavaScript-Code, die Sie in mehrere Dataform-Repositories importieren und verwenden können, um die Workflow-Entwicklung zu optimieren.

Sie können ein eigenes benutzerdefiniertes Paket in Dataform erstellen oder eines der Open-Source-Dataform-Pakete verwenden, die auf der GitHub-Seite für Open-Source-Dataform verfügbar sind.

Damit Sie den Inhalt eines Pakets in Dataform verwenden können, müssen Sie das Paket in Ihrem Dataform-Repository installieren und dann in die jeweilige JavaScript- oder SQLX-Datei importieren, in der Sie das Paket verwenden möchten. Weitere Informationen finden Sie unter Paket installieren.

Wenn Sie ein privates NPM-Paket in einem Dataform-Repository installieren möchten, müssen Sie das Paket authentifizieren.

Workflows ausschließlich mit JavaScript erstellen

In diesem Abschnitt erfahren Sie, wie Sie mit JavaScript Workflow-Aktionen in Dataform erstellen. Möglicherweise möchten Sie JavaScript anstelle von Dataform Core verwenden, um ähnliche Elemente in Ihrem Workflow wiederholt zu erstellen.

Als Alternative zur Entwicklung von Workflows in SQLX oder SQLX in Kombination mit JavaScript können Sie Workflow-Aktionen in .js-Dateien nur mit JavaScript erstellen. Sie können mehrere Workflow-Aktionen in einer JavaScript-Datei mit globalen Dataform-Methoden und beliebigem JavaScript ES5-Code wie Schleifen und Konstanten erstellen. Jede der globalen JavaScript-Methoden von Dataform enthält Eigenschaften, mit denen Sie die erstellten Objekte konfigurieren können.

Sie können die folgenden Workflow-Aktionen nur mit JavaScript in Dataform erstellen:

  • Erklärungen zu Datenquellen
  • Tabellen
  • Manuelle Behauptungen
  • Benutzerdefinierte SQL-Vorgänge

Mit JavaScript können Sie ähnliche Aktionen wiederholt in Ihrem Workflow erstellen. Sie können beispielsweise eine Ansicht jeder Tabelle in Ihrem Workflow erstellen, in der bestimmte Nutzer-IDs entfernt wurden.

Mit dem folgenden JavaScript-Codebeispiel können Sie eine Ansicht jeder Tabelle erstellen, in der der Wert des Felds user_id nicht einem 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 mit globalen Dataform-Methoden und beliebigem JavaScript-ES5-Code, z. B. Schleifen und Konstanten, mehrere Aktionen in einer JavaScript-Datei erstellen.

Sie können die folgenden Aktionen mit JavaScript in Dataform definieren:

JavaScript-Datei erstellen

Speichern Sie JavaScript-Dateien für Definitionen und Datenquellendeklarationen im Verzeichnis definitions/. So erstellen Sie eine neue JavaScript-Datei im Verzeichnis definitions/:

  1. Klicken Sie im Bereich Dateien neben definitions/ auf das Dreipunkt-Menü  Mehr.

  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 der Datei gefolgt von .js ein. Beispiel: definitions/definitions.js.

      Dateinamen dürfen nur Zahlen, Buchstaben, Bindestriche und Unterstriche enthalten.

    2. Klicken Sie auf Datei erstellen.

Workflow-Aktionseigenschaften mit JavaScript festlegen

Mit den folgenden globalen Dataform-Methoden können Sie SQL-Workflowaktionen mit Dataform erstellen:

  • declare: Wird verwendet, um eine Datenquelle zu deklarieren.
  • publish: Wird verwendet, um eine Tabelle zu definieren.
  • assert: Wird zum Erstellen einer Assertion verwendet.
  • operate: Wird verwendet, um einen benutzerdefinierten SQL-Vorgang zu definieren.

Jede der globalen Methoden enthält Eigenschaften, 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 Tabelleneigenschaften festlegen, indem Sie sie als zweites Methodenargument übergeben.

So übergeben Sie Tabelleneigenschaften als zweites Argument von publish():

  1. Maximieren Sie in Ihrem Entwicklerarbeitsbereich im Bereich Dateien das Symbol definitions/.

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

  3. Fügen Sie der Datei Tabelleneigenschaften für die Methode publish() im folgenden Format hinzu:

     method("first_method_argument", {
       property1: "property1_value",
       property2: "property2_value",
       property3: "property3_value",
     });
    
  4. Optional: Klicken Sie auf Formatieren.

Das folgende Codebeispiel zeigt, wie Eigenschaften für die Methode publish() festgelegt werden, indem die Eigenschaften als zweites Argument der Methode übergeben werden:

  publish("table1", {
    type: "table",
    dependencies: ["other_table"],
    description: {
      "Value is 1"
    }
  }).query(ctx => "SELECT 1 AS test");

Verweise auf Includes in einer JavaScript-Datei

Sie können in einer JavaScript-Datei auf jede „includes“-Funktion, jedes Makro oder jede Konstante verweisen. Weitere Informationen zu Includes in Dataform finden Sie im Abschnitt Code in einem einzelnen Repository mit Includes wiederverwenden in diesem Dokument.

Die Syntax für das Referenzieren von Includes in einer JavaScript-Datei hängt vom Speicherort der Include-Datei ab. Dataform speichert solche Dateien im Verzeichnis „includes“.

Verweis auf Includes der obersten Ebene

  • Wenn Sie auf eine Includes-Datei auf oberster Ebene verweisen möchten, geben Sie den Dateinamen an, wenn Sie die Variablen deklarieren.

Im folgenden Codebeispiel wird auf die Variablen serviceName und serviceId aus der Datei includes/service.js verwiesen:

  const {serviceName, serviceId} = service;

Verschachtelte Includes referenzieren

Wenn Sie auf eine verschachtelte Include-Datei verweisen möchten, geben Sie den Dateinamen in die JavaScript-Funktion „require“ ein.

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 integrierten Dataform-Funktionen finden Sie in der Dataform API-Referenz.

So verwenden Sie eine integrierte Abfragefunktion in einer JavaScript-Methode:

  1. Maximieren Sie in Ihrem Entwicklerarbeitsbereich im Bereich Dateien das Symbol 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 kontextbezogenes ctx-Argument ein.

  5. Optional: Wenn Sie JavaScript-Vorlagenstrings verwenden, setzen Sie das kontextbezogene Argument in Graviszeichen ``.

  6. Geben Sie im Argument „contextable“ die Abfragefunktion mit ihrem Parameter als Kontextobjekt ein.

  7. Optional: Klicken Sie auf Formatieren.

Das folgende Codebeispiel zeigt die Abfragefunktion ref, die in einem kontextbezogenen Argument der Methode „publish“ umschlossen ist:

  publish("example").query(ctx => `SELECT * FROM ${ctx.ref("other_table")}`);

Workflow-Datenquelle mit JavaScript deklarieren

Sie können mehrere Datenquellen in einer JavaScript-Deklarationsdatei mit der JavaScript-Methode „Dataform declare“ deklarieren. Weitere Informationen zur Methode „declare“ finden Sie in der Dataform Core-Referenz. Weitere Informationen zu Datenquellen in Dataform finden Sie unter Datenquelle deklarieren.

So deklarieren Sie eine Datenquelle in einer JavaScript-Datei:

  1. Maximieren Sie in Ihrem Entwicklerarbeitsbereich im Bereich Dateien das Symbol definitions/.

  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 die Datenquelle enthält
    • BIGQUERY_SCHEMA: das BigQuery-Dataset, in dem die externe Beziehung vorhanden ist
    • RELATION_NAME: der Name der Beziehung, mit der Sie später in Dataform auf die Datenquelle verweisen können
  4. Wenn Sie eine weitere Datenquelle in derselben Datei deklarieren möchten, fügen Sie der Datei einen zusätzlichen declare-Block hinzu.

  5. Optional: Klicken Sie auf Formatieren.

Tabelle mit JavaScript definieren

Sie können eine Tabelle mit der Dataform-JavaScript-Methode publish erstellen. Weitere Informationen zur Methode „publish“ finden Sie in der Dataform Core-Referenz.

Sie können die folgenden Tabellentypen definieren:

  • Tabelle
  • Inkrementelle Tabelle
  • Ansehen

Weitere Informationen zum Definieren von Tabellen in Dataform finden Sie unter Tabellen erstellen.

So definieren Sie eine Tabelle in einer JavaScript-Datei:

  1. Maximieren Sie in Ihrem Entwicklerarbeitsbereich im Bereich Dateien das Symbol 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");
    

    Ersetzen Sie Folgendes:

    • TABLE_NAME: der Name der Tabelle
    • SELECT_QUERY: Eine SQL SELECT-Anweisung, mit der die Tabelle definiert wird.
  4. Wenn Sie den Tabellentyp festlegen, Tabellenabhängigkeiten hinzufügen und eine Tabellenbeschreibung hinzufügen möchten, legen Sie die Objekteigenschaften der Methode publish fest.

  5. Wenn Sie eine weitere Tabelle in derselben Datei definieren möchten, wiederholen Sie Schritt 3 und Schritt 4.

  6. Optional: Klicken Sie auf Formatieren.

Manuelle Zusicherungen mit JavaScript definieren

Sie können manuelle SQL-Assertions in einer JavaScript-Datei mit der JavaScript-Methode „assert“ von Dataform erstellen. Weitere Informationen zur assert-Methode finden Sie in der Dataform Core-Referenz.

Eine SQL-Abfrage für eine manuelle Behauptung muss null Zeilen zurückgeben. Wenn die Abfrage bei der Ausführung Zeilen zurückgibt, schlägt die Assertion fehl. Sie können mehrere Zusicherungen in einer JavaScript-Datei erstellen.

Weitere Informationen zu Zusicherungen in Dataform finden Sie unter Datenqualität testen.

So erstellen Sie eine manuelle Behauptung in einer JavaScript-Datei:

  1. Maximieren Sie in Ihrem Entwicklerarbeitsbereich im Bereich Dateien das Symbol 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");
    

    Ersetzen Sie Folgendes:

    • ASSERTION_NAME: der Name für Ihre benutzerdefinierte Assertion
    • CUSTOM_ASSERTION_QUERY: Ihre SQL-Assertion-Abfrage
  4. Wenn Sie in derselben Datei eine weitere Assertion erstellen möchten, wiederholen Sie Schritt 3.

  5. Optional: Klicken Sie auf Formatieren.

Das folgende Codebeispiel zeigt eine JavaScript-Assertion, die bestätigt, 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

Sie können benutzerdefinierte SQL-Vorgänge in einer JavaScript-Datei mit der JavaScript-Methode „Dataform operate“ definieren. Weitere Informationen zu benutzerdefinierten SQL-Vorgängen in Dataform finden Sie unter Vorgänge erstellen.

So definieren Sie einen benutzerdefinierten SQL-Vorgang mit JavaScript:

  1. Maximieren Sie in Ihrem Entwicklerarbeitsbereich im Bereich Dateien das Symbol 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");
    

    Ersetzen Sie Folgendes:

    • OPERATION_NAME: Der Name des benutzerdefinierten Vorgangs
    • CUSTOM_SQL_QUERY: Ihre benutzerdefinierte SQL-Abfrage
  4. Wenn Sie in derselben Datei einen weiteren benutzerdefinierten SQL-Vorgang definieren möchten, wiederholen Sie Schritt 3.

  5. Optional: Klicken Sie auf Formatieren.

Das folgende Codebeispiel zeigt einen benutzerdefinierten SQL-Vorgang in einer JavaScript-Datei, mit dem eine einzelne neue Zeile in some_table eingefügt und test_column der neuen Zeile auf 2 festgelegt wird:

  operate("operation1").queries("INSERT INTO some_table (test_column) VALUES (2)");

Nächste Schritte