Tabelle erstellen

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:

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

  1. Erstellen und initialisieren Sie einen Entwicklungsarbeitsbereich in Ihrem Repository.
  2. 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/:

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

    Zur Seite „Dataform“

  2. Klicken Sie auf den Namen eines Repositorys, um es zu öffnen.

  3. Klicken Sie auf den Namen des Entwicklungsbereichs, um ihn zu öffnen.

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

  5. Klicken Sie auf Datei erstellen.

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

  7. Klicken Sie auf Datei erstellen.

Tabellentyp definieren

So erstellen Sie eine neue Definition für den Tabellentyp:

  1. Maximieren Sie im Bereich Dateien Ihres Entwicklungsbereichs das Verzeichnis definitions/.
  2. Wählen Sie die SQLX-Datei für die Tabellendefinition aus, die Sie bearbeiten möchten.
  3. 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
  4. Optional: Wenn Sie eine materialisierte Ansicht definieren möchten, geben Sie die Eigenschaft materialized unter type: "view" im folgenden Format ein:

    config {
      type: "view",
      materialized: true
    }
    

    Weitere Informationen finden Sie in der ITableConfig-Referenz für Dataform-Grundlagen.

  5. 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:

  1. Maximieren Sie im Bereich Dateien Ihres Entwicklungsbereichs das Verzeichnis definitions/.
  2. Wählen Sie die SQLX-Datei für die Tabellendefinition aus, die Sie bearbeiten möchten.
  3. Schreiben Sie unter dem config-Block eine SELECT-Beschreibung.
  4. 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:

  1. Maximieren Sie im Bereich Dateien Ihres Entwicklungsbereichs das Verzeichnis definitions/.
  2. Wählen Sie die SQLX-Datei für die Tabellendefinition aus, die Sie bearbeiten möchten.
  3. 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.

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