In diesem Dokument erfahren Sie, wie Sie JavaScript-Includes erstellen, um Code in Dataform wiederzuverwenden.
Im Ordner includes/
Ihres Repositorys können Sie JavaScript-Einschließen definieren. Eingeschlossen sind globale Konstanten oder Funktionen, die Sie im gesamten Repository wiederverwenden können.
Hinweise
Rufen Sie in der Google Cloud Console die Seite Dataform auf.
Wählen Sie ein Dataform-Repository aus oder erstellen Sie eins.
Wählen Sie einen Dataform-Entwicklungsarbeitsbereich aus oder erstellen Sie einen.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Dataform Editor (roles/dataform.editor
) für Arbeitsbereiche zu gewähren, um die Berechtigungen zu erhalten, die Sie zur Wiederverwendung von Code mit JavaScript-Includes benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Möglicherweise können Sie die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
JavaScript-Datei für in Dataform einschließende Dateien erstellen
So erstellen Sie eine neue JavaScript-Datei im Verzeichnis includes/
:
Klicken Sie im Bereich Dateien neben
includes/
auf das -Menü Mehr.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
includes/
den Namen der Datei gefolgt von.js
ein. Beispiel:includes/constants.js
Dateinamen dürfen nur Ziffern, Buchstaben, Bindestriche und Unterstriche enthalten.
Klicken Sie auf Datei erstellen.
JavaScript-Konstante erstellen
So erstellen Sie eine Konstante, die Sie im gesamten Projekt wiederverwenden können:
Rufen Sie Ihren Entwicklungsarbeitsbereich auf.
Maximieren Sie im Bereich Dateien die Option
includes/
.Erstellen oder wählen Sie eine JavaScript-Datei mit der Erweiterung
.js
aus.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: Wert Ihrer Konstante
Optional: Klicken Sie auf Format.
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 Tabellendefinitionsabfrage 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 obige Abfrage der Tabellendefinition Dataform Core 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 im gesamten Projekt wiederverwenden können:
Rufen Sie Ihren Entwicklungsarbeitsbereich auf.
Maximieren Sie im Bereich Dateien die Option
includes/
.Erstellen oder wählen Sie eine JavaScript-Datei mit der Erweiterung
.js
aus.Schreiben Sie in die Datei Ihre benutzerdefinierte JavaScript-Funktion.
Geben Sie in die Datei das folgende Code-Snippet ein:
module.exports = { FUNCTION_NAME }
Ersetzen Sie
FUNCTION_NAME
durch den Namen Ihrer Funktion.Optional: Klicken Sie auf Format.
Das folgende Codebeispiel zeigt eine benutzerdefinierte JavaScript-Funktion namens renderScript
in der Datei includes/functions.js
, die ein SQL-Skript generiert:
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 };
Das folgende Codebeispiel zeigt die Verwendung der benutzerdefinierten JavaScript-Funktion renderScript
in einer Dataform-Haupttabellendefinitionsabfrage:
config {
type: "table",
tags: ["advanced", "hourly"],
disabled: true
}
${functions.renderScript(ref("source_table"),
["country", "device_type"],
["revenue", "pageviews", "sessions"]
)}
Das folgende Codebeispiel zeigt die oben in SQL kompilierte Abfrage der Dataform Core-Tabellendefinition:
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
Einschluss in einer SQLX-Datei referenzieren
Sie können in einer SQLX-Datei auf eine beliebige Include-Funktion oder Konstante verweisen. Die Syntax für Verweise auf „Includes“ hängt vom Speicherort der Include-Datei ab.
Eine Include-Datei der obersten Ebene befindet sich direkt im Verzeichnis includes/
.
Eine verschachtelte Include-Datei befindet sich in einem Unterverzeichnis von includes/
.
Verweis auf einen Include in einer SQLX-Datei auf oberster Ebene
- Wenn Sie in einer Dataform-Kernabfrage auf eine Einschließen-Funktion oder -Konstante auf oberster Ebene verweisen möchten, geben Sie den Namen der Include-Definitionsdatei ohne die Erweiterung
.js
gefolgt vom Namen des exportierten Objekts ein.
Im folgenden Codebeispiel wird auf die in der Datei includes/constants.js
definierte Konstante firstDate
in einer SQLX-Tabellendefinitionsdatei verwiesen:
config {type: "table"}
select * from source_table where date > ${constants.firstDate}
Verschachtelte Include-Elemente in einer SQLX-Datei referenzieren
Als Referenz werden Einschließen, die sich in Unterverzeichnissen von definitions
befinden, mithilfe der JavaScript-Funktion require
und eines js {}
-Blocks importiert.
So verweisen Sie auf einen verschachtelten Include mit der JavaScript-Funktion require
:
Rufen Sie Ihren Entwicklungsarbeitsbereich auf.
Maximieren Sie im Bereich Dateien die Option
definitions/
.Wählen Sie eine SQLX-Datei aus.
Geben Sie im
config
-Block das folgende Code-Snippet ein:js { var { VARIABLE_NAME } = require("SUBDIRECTORY_INCLUDE"); }
Ersetzen Sie Folgendes:
- VARIABLE_NAME: der Name der Konstante oder Funktion, die Sie importieren möchten
- SUBDIRECTORY_INCLUDE: der Pfad der verschachtelten Datei
includes
Optional: Klicken Sie auf Format.
Im folgenden Codebeispiel wird die in der verschachtelten Datei includes/allConstants/constants.js
definierte Konstante firstDate
in einer SQLX-Tabellendefinitionsdatei referenziert:
config {type: "table"}
js {
var { firstDate } = require("includes/allConstants/constants");
}
select * from source_table where date > ${firstDate}
JavaScript-Einschlussfunktion mit der Dataform-Hauptfunktion ref
verwenden
Wenn Sie eine JavaScript-Include-Funktion mit der Dataform-Core-ref
-Funktion 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 mithilfe von SUM
aggregiert und dann 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, 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 Abfrage definitions/stats_per_country_and_device.sqlx
, 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 my_schema.source_table
GROUP BY 1, 2
Weitere Informationen zur Dataform-Kernfunktion ref
finden Sie unter Übersicht über Dataform Core.
Nächste Schritte
Informationen zum Verweisen auf Einbindungen in JavaScript-Dateien finden Sie unter SQL-Workflows mit JavaScript erstellen.
Informationen zum Wiederverwenden von Code mit Dataform Core sowie zum Blockieren und Inline-JavaScript in Dataform Core-Dateien finden Sie unter Übersicht über Dataform Core.