Einführung in JavaScript in Dataform

In diesem Dokument wird erläutert, wie Sie JavaScript verwenden können, um SQL-Workflows in Dataform zu entwickeln.

Mit Dataform Core können Sie SQL-Workflowobjekte mit SQLX und JavaScript erstellen. Optional, aber mit JavaScript zusammen mit SQLX, um ähnliche Elemente wiederholt im Workflow zu erstellen. Mit JavaScript können Sie beispielsweise eine Ansicht jeder Tabelle in Ihrem Workflow erstellen, wobei bestimmte Nutzer-IDs entfernt werden. Sie können SQL-Workflow-Objekte auch ausschließlich mit JavaScript entwickeln.

Wenn Sie Dataform-SQL-Workflows mit JavaScript entwickeln möchten, müssen Sie mit der JavaScript-Syntax und den folgenden JavaScript-Konzepten vertraut sein:

  • Variablen
  • Arrays
  • Bedingte Anweisungen
  • Für Schleifen
  • Maps
  • Funktionen
  • Objekte
  • Module exportieren und importieren

JavaScript-Code zu einer SQLX-Datei hinzufü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 JavaScript-Funktion self Dataform Core, die inline in den post_operations-Block einer SQLX-Datei eingefü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"
}

Das folgende Codebeispiel zeigt eine Konstante, 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 mit JavaScript 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. Zur Wiederverwendung von JavaScript-Code in einem einzelnen Dataform-Repository können Sie auch Einbindungen erstellen. Wenn Sie JavaScript-Code in mehreren Dataform-Repositories wiederverwenden möchten, können Sie ein Paket erstellen oder importieren.

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

Um sich wiederholende Teile des SQL-Codes 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 den in einem JavaScript-Block definierten Code nur innerhalb der SQLX-Datei wiederverwenden, in der der Block definiert ist. Weitere Informationen finden Sie in der Übersicht über Dataform Core.

Das folgende Codebeispiel zeigt eine Konstante und eine Funktion, 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 mithilfe von Einbindungen in einem einzelnen Repository wiederverwenden

Dazu gehören JavaScript-Konstanten oder -Funktionen, die global für Ihr Repository verfügbar sind. Sie definieren Umfasst 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:

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

Das folgende Codebeispiel zeigt die launch_date-Konstante, auf die in einer Tabellendefinitionsabfrage in einer SQLX-Datei verwiesen wird:

config {type: "table"}

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

Code mit Paketen in mehreren Repositories wiederverwenden

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

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

Ein Beispiel für die Verwendung eines Open-Source-Pakets in Dataform finden Sie unter Sich langsam verändernde Dimensionen in Dataform verwenden.

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 JavaScript- oder SQLX-Datei importieren, in der Sie das Paket verwenden möchten. Weitere Informationen finden Sie unter Paket in Dataform installieren.

Um ein privates NPM-Paket in einem Dataform-Repository installieren zu können, müssen Sie das Paket authentifizieren.

SQL-Workflows in JavaScript erstellen

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

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

  • Datenquellendeklarationen
  • Manuelle Assertions
  • Tables
  • Manuelle Assertions
  • Benutzerdefinierte SQL-Vorgänge

Weitere Informationen zum Erstellen von SQL-Workflow-Objekten nur mit JavaScript finden Sie unter Dataform-SQL-Workflows mit JavaScript erstellen.

Nächste Schritte