JavaScript in Dataform verwenden

In diesem Dokument erfahren Sie, wie Sie mit JavaScript Workflows in Dataform entwickeln können. Außerdem erfahren Sie hier, wie Sie mit JavaScript Workflow-Aktionen erstellen und JavaScript-Includes erstellen, um Code in Dataform wiederzuverwenden.

Mit Dataform Core können Sie Workflow-Aktionen mit SQLX und JavaScript erstellen. Optional: Verwenden Sie JavaScript zusammen mit SQLX, um ähnliche Elemente wiederholt in Ihrem Workflow zu erstellen. Mit JavaScript können Sie beispielsweise eine Ansicht jeder Tabelle in Ihrem Workflow erstellen, aus der bestimmte Nutzer-IDs entfernt wurden. Sie können Workflow-Aktionen auch ausschließlich mit JavaScript entwickeln.

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

  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

Wenn Sie einen Workflow mit JavaScript entwickeln und Code mit JavaScript-Includes wiederverwenden möchten, müssen Sie die IAM-Rolle Dataform Editor (roles/dataform.editor) für Workspaces haben. Bitten Sie Ihren Administrator, Ihnen diese Rolle zuzuweisen. 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.

SQLX-Datei JavaScript-Code hinzufügen

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

Mit einem JavaScript-Block können Sie Funktionen oder Konstanten in einer SQLX-Datei definieren. Mit Inline-JavaScript können Sie eine SQLX- oder SQL-Abfrage dynamisch ändern.

Das folgende Codebeispiel zeigt die integrierte JavaScript-Funktion self des Dataform-Kerns, die inline in den post_operations-Block in einer SQLX-Datei eingefügt wurde:

See more code actions.
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:

See more code actions.
js {
  const columnName = "foo";
}

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

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 einkapseln. Wenn Sie JavaScript-Code in einem einzelnen Dataform-Repository wiederverwenden möchten, können Sie Includes erstellen. Wenn Sie JavaScript-Code für mehrere Dataform-Repositories wiederverwenden möchten, können Sie ein Paket erstellen oder importieren.

Wenn Sie wiederkehrende Teile von SQL-Code erstellen möchten, die Sie in einer einzelnen SQLX-Datei wiederverwenden können, können Sie Funktionen und Konstanten in einem JavaScript-Block einkapseln. Sie können Code, der in einem JavaScript-Block definiert ist, nur innerhalb der SQLX-Datei wiederverwenden, in der der Block definiert ist. Weitere Informationen finden Sie unter Dataform Core.

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

See more code actions.
js {
 const foo = 1;
 function bar(number){
     return number+1;
 }
}

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

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

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

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

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

config {type: "table"}

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

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 Ziffern, Buchstaben, Bindestriche und Unterstriche enthalten.

    2. Klicken Sie auf Datei erstellen.

So erstellen Sie eine Konstante, die Sie im gesamten Projekt wiederverwenden können:

  1. Rufen Sie Ihren Entwicklungsarbeitsbereich auf.

  2. Maximieren Sie im Bereich Dateien 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 der Konstante
    • CONSTANT_VALUE: der Wert der Konstante
  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 Tabellendefinitionabfrage in einer SQLX-Datei auf die Konstante PROJECT_ID verwiesen:

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

Im folgenden Codebeispiel wird die vorherige Abfrage zur Definition der Dataform-Kerntabelle in SQL kompiliert:

  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 includes/.

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

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

  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, die renderScript aufgerufen und in der Datei includes/functions.js gespeichert wird. 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 wird die Verwendung der benutzerdefinierten JavaScript-Funktion renderScript in einer Abfrage zur Definition der Dataform-Kerntabelle gezeigt:

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

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

Im folgenden Codebeispiel wird die vorherige Abfrage zur Definition der Dataform-Kerntabelle in SQL kompiliert:

  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

Auf ein Include in einer SQLX-Datei verweisen

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

Auf ein Include auf oberster Ebene in einer SQLX-Datei verweisen

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

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

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

Verweisen Sie in einer SQLX-Datei auf ein verschachteltes Include.

Wenn du auf Includes in Unterverzeichnissen von definitions verweisen möchtest, musst du sie mithilfe der JavaScript-Funktion require und eines js {}-Blocks importieren.

So verweisen Sie mit der JavaScript-Funktion require auf ein verschachteltes Include:

  1. Rufen Sie Ihren Entwicklungsarbeitsbereich auf.

  2. Maximieren Sie im Bereich Dateien definitions/.

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

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

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

    Ersetzen Sie Folgendes:

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

Im folgenden Codebeispiel wird in einer SQLX-Datei für die Tabellendefinition auf die firstDate-Konstante verwiesen, die in der verschachtelten includes/allConstants/constants.js-Datei 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-Kernfunktion ref verwenden

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

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

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, wobei die Dataform-Kernfunktion ref als Argument übergeben wird:

${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 mithilfe von Paketen in mehreren Repositories wiederverwenden

Pakete sind Sammlungen von JavaScript-Code, die Sie in mehrere Dataform-Repositories importieren und verwenden können, um die Workflowentwicklung 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-Pakete verfügbar sind.

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

Damit Sie ein privates NPM-Paket in einem Dataform-Repository installieren können, 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. Wenn Sie ähnliche Elemente in Ihrem Workflow wiederholt erstellen möchten, können Sie JavaScript anstelle von Dataform Core verwenden.

Als Alternative zum Entwickeln von Workflows in SQLX oder SQLX in Kombination mit JavaScript können Sie Workflowaktionen 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 erstellen, z. B. Schleifen und Konstanten. 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 erstellen, indem Sie in Dataform nur JavaScript verwenden:

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

Mit JavaScript können Sie ähnliche Aktionen in Ihrem Workflow wiederholt erstellen. Sie können beispielsweise eine Ansicht jeder Tabelle in Ihrem Workflow erstellen, aus 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 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 mehrere Aktionen mit globalen Dataform-Methoden und beliebigem JavaScript ES5-Code wie Schleifen und Konstanten 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 Ziffern, 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: Damit wird eine Datenquelle deklariert.
  • publish: Damit wird eine Tabelle definiert.
  • assert: Wird zum Erstellen einer Behauptung verwendet.
  • operate: Damit wird ein benutzerdefinierter SQL-Vorgang definiert.

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-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 Entwicklungsbereich im Bereich Dateien 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.

Im folgenden Codebeispiel wird gezeigt, wie Sie der Methode publish() Eigenschaften zuweisen, 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 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 dieses Dokuments.

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

Referenz auf oberster Ebene enthält

  • Wenn Sie auf eine Includes-Datei auf oberster Ebene verweisen möchten, geben Sie bei der Deklaration Ihrer Variablen den Dateinamen an.

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

  const {serviceName, serviceId} = service;

Verweisen Sie auf verschachtelte Includes.

Wenn Sie auf eine verschachtelte Includes-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 den integrierten Funktionen von Dataform finden Sie in der Dataform API-Referenz.

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

  1. Maximieren Sie in Ihrem Entwicklungsbereich 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 kontextbezogenes ctx-Argument ein.

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

  6. Geben Sie in das Argument für den Kontext die Abfragefunktion mit ihrem Parameter als Kontextobjekt ein.

  7. Optional: Klicken Sie auf Formatieren.

Im folgenden Codebeispiel ist die ref-Abfragefunktion in ein kontextbezogenes Argument der publish-Methode verpackt:

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

Workflow-Datenquelle mit JavaScript deklarieren

Mit der Dataform-Methode „declare“ können Sie mehrere Datenquellen in einer JavaScript-Deklarationsdatei deklarieren. Weitere Informationen zur Methode „declare“ finden Sie in der Dataform-Kernreferenz. 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 Entwicklungsbereich im Bereich Dateien 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 sich die externe Beziehung befindet
    • RELATION_NAME: der Name der Beziehung, mit dem Sie später in Dataform auf die Datenquelle verweisen können
  4. Wenn Sie in derselben Datei eine weitere Datenquelle 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 Publish-Methode finden Sie in der Dataform-Kernreferenz.

Sie können die folgenden Tabellentypen definieren:

  • Tabelle
  • Inkrementelle Tabelle
  • Ansehen

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 in Ihrem Entwicklungsbereich 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");
    

    Ersetzen Sie Folgendes:

    • TABLE_NAME: der Name der Tabelle
    • SELECT_QUERY: eine SQL-SELECT-Anweisung, die die Tabelle definiert
  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 in derselben Datei eine weitere Tabelle definieren möchten, wiederholen Sie Schritt 3 und Schritt 4.

  6. Optional: Klicken Sie auf Formatieren.

Manuelle Behauptungen mit JavaScript definieren

Mit der Dataform-JavaScript-Methode „assert“ können Sie manuelle SQL-Behauptungen in einer JavaScript-Datei erstellen. Weitere Informationen zur assert-Methode finden Sie in der Dataform-Kernreferenz.

Eine SQL-Abfrage für manuelle Bestätigungen darf keine Zeilen zurückgeben. Wenn die Abfrage bei der Ausführung Zeilen zurückgibt, schlägt die Assertion fehl. Sie können mehrere Behauptungen in einer JavaScript-Datei erstellen.

Weitere Informationen zu Behauptungen in Dataform finden Sie unter Tabellen mit Behauptungen testen.

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

  1. Maximieren Sie in Ihrem Entwicklungsbereich 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");
    

    Ersetzen Sie Folgendes:

    • ASSERTION_NAME: der Name der benutzerdefinierten Bestätigung
    • CUSTOM_ASSERTION_QUERY: Ihre SQL-Assertion-Abfrage
  4. Wenn Sie in derselben Datei eine weitere Behauptung erstellen möchten, wiederholen Sie Schritt 3.

  5. Optional: Klicken Sie auf Formatieren.

Das folgende Codebeispiel zeigt eine JavaScript-Bestätigung, 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 „Dataform operate“ 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:

  1. Maximieren Sie in Ihrem Entwicklungsbereich 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");
    

    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