Tabelle erstellen

In diesem Dokument erfahren Sie, wie Sie Tabellen mit Dataform Core in Dataform definieren.

Tabellendefinitionen

Zum Definieren einer Tabelle definieren Sie den Tabellentyp und schreiben eine SELECT-Anweisung in eine type: "table"-SQLX-Datei. Anschließend kompiliert Dataform Ihren Dataform-Core-Code in SQL, führt den SQL-Code aus und erstellt die definierten Tabellen in BigQuery.

In einer zentralen SELECT-Anweisung von Dataform definieren Sie die Tabellenstruktur und verweisen auf andere Objekte Ihres SQL-Workflows.

Sie können nicht nur Tabellen in einer type: "table"-SLQX-Datei, 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

Mit der Funktion ref können Sie auf ein SQL-Workflowobjekt in einer SELECT-Anweisung verweisen und es automatisch als Abhängigkeit hinzufügen. Dataform führt Abhängigkeiten vor den von ihnen abhängigen Tabellen aus, um eine korrekte Pipelinereihenfolge zu gewährleisten.

Die ref-Funktion ist eine integrierte Kernfunktion von Dataform, die für die Abhängigkeitsverwaltung in Dataform von entscheidender Bedeutung ist. Mit der Funktion ref können Sie auf die folgenden Objekte verweisen, die in Ihrem Dataform-SQL-Workflow definiert sind, und diese automatisch abhängig machen, anstatt das Schema und die Tabellennamen hartzucodieren:

Dataform verwendet die Funktion ref, um eine Abhängigkeitsstruktur aller zu erstellenden oder zu aktualisierenden Tabellen zu erstellen.

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 Funktion ref geben Sie den Namen der Tabellen- oder Datenquellendeklaration an, von der Sie abhängig sein möchten. Dies ist in der Regel der Dateiname der SQLX-Datei, in der die Tabellen- oder Datenquellendeklaration definiert ist.

Wenn ein Tabellenname überschrieben wird, verwenden Sie den überschriebenen Namen in der ref-Funktion. Beispiel: Verweisen Sie auf eine Tabelle mit config { name: "overridden_name" } als ref("overridden_name"). 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 zwei Argumente für die Funktion ref bereitstellen: Schemaname und Tabellenname.

Das folgende Codebeispiel zeigt die Funktion ref mit zwei Argumenten zum Angeben einer Tabelle innerhalb eines bestimmten Schemas:

config { type: "table" }
SELECT * FROM ${ref("schema", "store_clean")}

Bei Tabellen, Assertions, Datenquellendeklarationen oder benutzerdefinierten SQL-Vorgängen, auf die in der SELECT-Anweisung nicht in einer ref-Funktion verwiesen wird, können Sie dem config-Block auch manuell Tabellenabhängigkeiten hinzufügen. Dataform führt diese Abhängigkeiten vor abhängigen Tabellen aus.

Das folgende Codebeispiel zeigt eine Tabellenabhängigkeit im config-Block:

config { dependencies: [ "unreferenced_table" ] }
SELECT * FROM ...

Weitere Informationen zum Abhängigkeitsmanagement 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. Der Verweis wird jedoch nicht als Abhängigkeit hinzugefügt. Das bedeutet, dass das Objekt, auf das mit resolve verwiesen wird, keinen Einfluss auf die Ausführung der Tabelle hat, die resolve verwendet.

Weitere Informationen zu integrierten Dataform-Kernfunktionen finden Sie in der Dataform-Kernreferenz.

Hinweise

  1. Erstellen und initialisieren Sie einen Entwicklungsarbeitsbereich in Ihrem Repository.
  2. Optional: Deklarieren Sie eine Datenquelle.

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 zum Definieren einer Tabelle 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.

SQLX-Datei für Tabellendefinition erstellen

SQLX-Tabellendefinitionsdateien werden im Verzeichnis definitions/ gespeichert. 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 Repository-Namen, um ein Repository zu öffnen.

  3. Klicken Sie auf den Namen des Arbeitsbereichs, um einen Entwicklungsarbeitsbereich zu öffnen.

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

  5. Klicken Sie auf Datei erstellen.

  6. Geben Sie im Feld Dateipfad hinzufügen den Namen der Datei gefolgt von .sqlx nach definitions/ ein. Beispiel: definitions/my-table.sqlx

    Dateinamen dürfen nur Ziffern, Buchstaben, Bindestriche und Unterstriche enthalten.

  7. Klicken Sie auf Datei erstellen.

Tabellentyp definieren

So erstellen Sie eine neue Tabellentypdefinition:

  1. Maximieren Sie in Ihrem Entwicklungsarbeitsbereich im Bereich Dateien das Verzeichnis definitions/.
  2. Wählen Sie die SQLX-Tabellendefinitionsdatei 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: Zum Definieren einer materialisierten Ansicht geben Sie unter type: "view" das Attribut materialized im folgenden Format ein:

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

    Weitere Informationen finden Sie in der ITableConfig Dataform Core-Referenz.

  5. Optional: Klicken Sie auf Format.

Tabellenstruktur und Abhängigkeiten definieren

So schreiben Sie eine SELECT-Anweisung für die Tabellendefinition und definieren die Tabellenstruktur sowie Abhängigkeiten:

  1. Maximieren Sie in Ihrem Entwicklungsarbeitsbereich im Bereich Dateien das Verzeichnis definitions/.
  2. Wählen Sie die SQLX-Tabellendefinitionsdatei aus, die Sie bearbeiten möchten.
  3. Schreiben Sie unter dem config-Block eine SELECT-Anweisung.
  4. Optional: Klicken Sie auf Format.

Das folgende Codebeispiel zeigt eine Tabellendefinition mit einer SELECT-Anweisung und der ref-Funktion:

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, die nicht in der SELECT-Anweisung referenziert sind, aber vor der aktuellen Tabelle ausgeführt werden müssen:

  1. Maximieren Sie in Ihrem Entwicklungsarbeitsbereich im Bereich Dateien das Verzeichnis definitions/.
  2. Wählen Sie die SQLX-Tabellendefinitionsdatei aus, die Sie bearbeiten möchten.
  3. Geben Sie im 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 Format.

Das folgende Codebeispiel zeigt zwei Tabellen, die als manuelle Tabellenabhängigkeiten dem Block config einer Tabellendefinitionsdatei hinzugefügt wurden:

config { dependencies: [ "some_table", "some_other_table" ] }

Nächste Schritte