In diesem Dokument wird beschrieben, wie Sie Tabellen mit dem Dataform-Kern in Dataform definieren.
Tabellendefinitionen
Um eine Tabelle zu definieren, müssen Sie den Tabellentyp definieren und eine SELECT
-Anweisung in einer type: "table"
-SQLX-Datei schreiben. Dataform kompiliert dann den Dataform-Kerncode in SQL, führt den SQL-Code aus und erstellt die definierten Tabellen in BigQuery.
In einer Dataform-SELECT
-Kernanweisung definieren Sie die Tabellenstruktur und verweisen auf andere Objekte Ihres SQL-Workflows.
Sie können nicht nur Tabellen in einer type: "table"
-SLQX-Datei definieren, sondern auch leere Tabellen erstellen, indem Sie eine benutzerdefinierte SQL-Abfrage in einer type: "operations"
-SQLX-Datei definieren.
Weitere Informationen finden Sie unter Leere Tabelle erstellen.
Abhängigkeiten mit ref
referenzieren
Verwenden Sie die Funktion ref
, um in einer SELECT
-Anweisung auf ein SQL-Workflowobjekt zu verweisen und es automatisch als Abhängigkeit hinzuzufügen. Dataform führt Abhängigkeiten vor Tabellen aus, die davon abhängen, um die richtige Pipeline-Reihenfolge zu gewährleisten.
Die Funktion ref
ist eine integrierte Dataform-Kernfunktion, die für die Abhängigkeitsverwaltung in Dataform entscheidend ist. Mit der Funktion ref
können Sie auf die folgenden Objekte verweisen und automatisch darauf angewiesen sein, die in Ihrem Dataform-SQL-Workflow definiert sind, anstatt die Schema- und Tabellennamen hartzucodieren:
- Tabellen aller unterstützten Tabellentypen
- Datenquellendeklarationen
- Benutzerdefinierte SQL-Vorgänge, bei denen das
hasOutput
-Attribut auftrue
festgelegt ist
Dataform verwendet die Funktion ref
, um einen Abhängigkeitsbaum aller Tabellen zu erstellen, die erstellt oder aktualisiert werden sollen.
Nach der Kompilierung fügt Dataform der SQL-Anweisung Boilerplate-Anweisungen wie CREATE
, REPLACE
, INSERT
oder MERGE
hinzu.
Das folgende Codebeispiel zeigt eine Tabellendefinition mit der Funktion ref
:
config { type: "table" }
SELECT
order_date AS date,
order_id AS order_id,
order_status AS order_status,
SUM(item_count) AS item_count,
SUM(amount) AS revenue
FROM ${ref("store_clean")}
GROUP BY 1, 2
In der ref
-Funktion geben Sie den Namen der Tabellen- oder Datenquellendeklaration an, von der Sie abhängig sein möchten. Das ist in der Regel der Dateiname der SQLX-Datei, in der die Deklaration der Tabelle oder Datenquelle definiert ist.
Wenn ein Tabellenname überschrieben wurde, verwenden Sie den überschriebenen Namen in der ref
-Funktion.
Beispiel: Eine Tabelle mit config { name: "overridden_name" }
wird als ref("overridden_name")
referenziert. Weitere Informationen zum Überschreiben von Tabellennamen finden Sie unter Zusätzliche Tabelleneinstellungen konfigurieren.
Wenn Sie mehrere Tabellen mit demselben Namen in verschiedenen Schemas haben, können Sie auf eine bestimmte Tabelle verweisen, indem Sie der ref
-Funktion zwei Argumente übergeben: Schemaname und Tabellenname.
Das folgende Codebeispiel zeigt die Funktion ref
mit zwei Argumenten, um eine Tabelle in einem bestimmten Schema anzugeben:
config { type: "table" }
SELECT * FROM ${ref("schema", "store_clean")}
Sie können dem config
-Block auch manuell Tabellenabhängigkeiten für Tabellen, Behauptungen, Datenquellendeklarationen oder benutzerdefinierte SQL-Vorgänge hinzufügen, auf die in der SELECT
-Anweisung nicht in einer ref
-Funktion verwiesen wird. Dataform führt diese Abhängigkeiten vor den abhängigen Tabellen aus.
Das folgende Codebeispiel zeigt eine Tabellenabhängigkeit im Block config
:
config { dependencies: [ "unreferenced_table" ] }
SELECT * FROM ...
Weitere Informationen zur Abhängigkeitsverwaltung in Ihrem SQL-Workflow finden Sie unter Abhängigkeiten deklarieren.
Mit resolve
auf andere Tabellen verweisen
Mit der resolve
-Funktion können Sie in einer SELECT
-Anweisung wie der ref
-Funktion auf eine Tabellen- oder Datenquellendeklaration verweisen. Die Referenz wird jedoch nicht als Abhängigkeit hinzugefügt. Das bedeutet, dass sich das Objekt, auf das mit resolve
verwiesen wird, nicht auf die Ausführung der Tabelle auswirkt, in der resolve
verwendet wird.
Weitere Informationen zu den integrierten Kernfunktionen von Dataform finden Sie in der Dataform-Referenz.
Hinweis
- Erstellen und initialisieren Sie einen Entwicklungsarbeitsbereich in Ihrem Repository.
- Optional: Erklären Sie eine Datenquelle.
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 Definieren einer Tabelle 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.
SQLX-Datei für Tabellendefinition erstellen
Speichern Sie SQLX-Dateien für die Tabellendefinition im Verzeichnis definitions/
. So erstellen Sie eine neue SQLX-Datei im Verzeichnis definitions/
:
Rufen Sie in der Cloud Console die Seite Dataform auf.
Klicken Sie auf den Namen eines Repositorys, um es zu öffnen.
Klicken Sie auf den Namen des Entwicklungsbereichs, um ihn zu öffnen.
Klicken Sie im Bereich Dateien neben
definitions/
auf das Dreipunkt-Menü Mehr.Klicken Sie auf Datei erstellen.
Geben Sie im Feld Dateipfad hinzufügen den Namen der Datei ein und fügen Sie nach
definitions/
die Zahl.sqlx
hinzu. Beispiel:definitions/my-table.sqlx
Dateinamen dürfen nur Zahlen, Buchstaben, Bindestriche und Unterstriche enthalten.
Klicken Sie auf Datei erstellen.
Tabellentyp definieren
So erstellen Sie eine neue Definition für den Tabellentyp:
- Maximieren Sie im Bereich Dateien Ihres Entwicklungsbereichs das Verzeichnis
definitions/
. - Wählen Sie die SQLX-Datei für die Tabellendefinition aus, die Sie bearbeiten möchten.
Geben Sie in die Datei das folgende Code-Snippet ein:
config { type: "TABLE_TYPE" }
Ersetzen Sie TABLE_TYPE durch einen der folgenden Tabellentypen:
table
incremental
view
Optional: Wenn Sie eine materialisierte Ansicht definieren möchten, geben Sie die Eigenschaft
materialized
untertype: "view"
im folgenden Format ein:config { type: "view", materialized: true }
Weitere Informationen finden Sie in der
ITableConfig
-Referenz für Dataform-Grundlagen.Optional: Klicken Sie auf Formatieren.
Tabellenstruktur und Abhängigkeiten definieren
So schreiben Sie eine SELECT
-Anweisung für die Tabellendefinition und definieren die Tabellenstruktur und Abhängigkeiten:
- Maximieren Sie im Bereich Dateien Ihres Entwicklungsbereichs das Verzeichnis
definitions/
. - Wählen Sie die SQLX-Datei für die Tabellendefinition aus, die Sie bearbeiten möchten.
- Schreiben Sie unter dem
config
-Block eineSELECT
-Beschreibung. - Optional: Klicken Sie auf Formatieren.
Das folgende Codebeispiel zeigt eine Tabellendefinition mit einer SELECT
-Anweisung und der Funktion ref
:
config { type: "table" }
SELECT
customers.id AS id,
customers.first_name AS first_name,
customers.last_name AS last_name,
customers.email AS email,
customers.country AS country,
COUNT(orders.id) AS order_count,
SUM(orders.amount) AS total_spent
FROM
dataform-samples.dataform_sample.crm_customers AS customers
LEFT JOIN ${ref('order_stats')} orders
ON customers.id = orders.customer_id
WHERE
customers.id IS NOT NULL
AND customers.first_name <> 'Internal account'
AND country IN ('UK', 'US', 'FR', 'ES', 'NG', 'JP')
GROUP BY 1, 2, 3, 4, 5
Manuelle Tabellenabhängigkeiten hinzufügen
So fügen Sie Tabellenabhängigkeiten hinzu, auf die in der SELECT
-Anweisung nicht verwiesen wird, die aber vor der aktuellen Tabelle ausgeführt werden müssen:
- Maximieren Sie im Bereich Dateien Ihres Entwicklungsbereichs das Verzeichnis
definitions/
. - Wählen Sie die SQLX-Datei für die Tabellendefinition aus, die Sie bearbeiten möchten.
Geben Sie in den Block
config
der Tabelle das folgende Code-Snippet ein:dependencies: [ "DEPENDENCY_TABLE", ]
Ersetzen Sie DEPENDENCY_TABLE durch den Dateinamen der Tabelle, die Sie als Abhängigkeit hinzufügen möchten. Sie können mehrere Dateinamen eingeben.
Optional: Klicken Sie auf Formatieren.
Im folgenden Codebeispiel sind zwei Tabellen zu sehen, die dem config
-Block einer Tabellendefinitionsdatei als manuelle Tabellenabhängigkeiten hinzugefügt wurden:
config { dependencies: [ "some_table", "some_other_table" ] }
Nächste Schritte
- Informationen zum Konfigurieren von inkrementellen Tabellen finden Sie unter Inkrementelle Tabellen konfigurieren.
- Informationen zum Konfigurieren von Tabellenpartitionen und Clustern finden Sie unter Tabellenpartitionen und Cluster erstellen.
- Informationen zum Hinzufügen von Dokumentationen zu Tabellen finden Sie unter Tabellendokumentation hinzufügen.
- Informationen zum Testen von Tabellendaten mit Behauptungen finden Sie unter Tabellen mit Behauptungen testen.
- Informationen zum Definieren von Tabellen mit JavaScript finden Sie unter Dataform-Workflows mit JavaScript erstellen.
- Weitere Informationen zum Konfigurieren zusätzlicher Tabelleneinstellungen finden Sie unter Zusätzliche Tabelleneinstellungen konfigurieren.