Zusätzliche Tabelleneinstellungen konfigurieren

In diesem Dokument wird beschrieben, wie Sie zusätzliche Tabelleneinstellungen in einer Tabellendefinitionsdatei konfigurieren. Mit Dataform Core können Sie pre_operations und post_operations definieren, um eine SQL-Anweisung vor oder nach der Tabellenerstellung auszuführen. Sie können auch Tabelleneinstellungen wie database oder schema überschreiben und die Tabellenerstellung deaktivieren.

Hinweise

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

    Zu Dataform

  2. Wählen Sie ein Repository aus oder erstellen Sie eines.

  3. Wählen Sie einen Entwicklungsarbeitsbereich aus oder erstellen Sie einen.

  4. Tabelle erstellen

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 Konfigurieren zusätzlicher Tabelleneinstellungen 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.

Tabelleneinstellungen überschreiben

Sie können das Schema, die Datenbank und den Namen einer ausgewählten Tabelle überschreiben.

Standardmäßig entspricht eine Tabelle dem Schema und der Datenbankkonfiguration, die Sie in workflow_settings.yaml festgelegt haben. Der Name einer Tabelle entspricht dem Namen der SQLX-Datei mit der Tabellendefinition.

So überschreiben Sie das Schema und den Namen einer ausgewählten Tabelle:

  1. Rufen Sie Ihren Entwicklungsarbeitsbereich auf.

  2. Maximieren Sie im Bereich Dateien die Option definitions/.

  3. Öffnen Sie eine SQLX-Tabellendefinitionsdatei.

  4. Geben Sie im Block config das folgende Code-Snippet ein:

     {
       schema: "OVERRIDDEN_SCHEMA",
       database: "OVERRIDDEN_DATABASE",
       name: "OVERRIDDEN_NAME"
     }
    

    Ersetzen Sie Folgendes:

    • OVERRIDDEN_SCHEMA: das BigQuery-Dataset, in dem Sie die Tabelle erstellen möchten

    • OVERRIDDEN_DATABASE: die ID des BigQuery-Projekts, in dem Sie die Tabelle erstellen möchten

    • OVERRIDDEN_NAME: der Name der Tabelle, der sich vom Dateinamen der SQLX-Tabellendefinition unterscheidet

  5. Optional: Klicken Sie auf Formatieren.

Auf eine Tabelle mit einem überschriebenen Tabellennamen verweisen

  • Wenn Sie in der Funktion ref auf eine Tabelle mit einem überschriebenen Tabellennamen verweisen möchten, geben Sie den in name: "" festgelegten überschriebenen Tabellennamen ein.

Im folgenden Codebeispiel wird auf eine Tabelle verwiesen, deren Name in overridden_name geändert wurde:

  SELECT * FROM ${ref("overridden_name")}

SQL-Anweisung definieren, die vor dem Erstellen der Tabelle ausgeführt werden soll

Sie können Dataform so konfigurieren, dass ein oder mehrere SQL-Anweisungen ausgeführt werden, bevor eine ausgewählte Tabelle in BigQuery erstellt wird. Wenn Sie eine SQL-Anweisung ausführen möchten, bevor Dataform eine ausgewählte Tabelle erstellt, fügen Sie die Anweisung dem pre_operations-Block in der SQLX-Datei für die Tabellendefinition hinzu.

So erstellen Sie eine benutzerdefinierte SQL-Anweisung, die ausgeführt wird, bevor Dataform eine bestimmte Tabelle erstellt:

  1. Rufen Sie Ihren Entwicklungsarbeitsbereich auf.

  2. Maximieren Sie im Bereich Dateien die Option definitions/.

  3. Öffnen Sie eine SQLX-Tabellendefinitionsdatei.

  4. Geben Sie außerhalb des Blocks config den Wert pre_operations { ... } ein.

  5. Fügen Sie Ihre SQL-Anweisung in pre_operations { ... } ein.

  6. Optional: Wenn Sie mehrere Anweisungen hinzufügen möchten, trennen Sie sie mit ---.

  7. Optional: Klicken Sie auf Formatieren.

Das folgende Codebeispiel zeigt eine pre_operations-Anweisung, mit der eine temporäre Funktion erstellt wird, die in der SELECT-Anweisung verwendet werden kann:

  pre_operations {
    CREATE TEMP FUNCTION AddFourAndDivide(x INT64, y INT64)
      RETURNS FLOAT64
      AS ((x + 4) / y);
  }

SQL-Anweisung definieren, die nach dem Erstellen der Tabelle ausgeführt werden soll

Sie können Dataform so konfigurieren, dass nach dem Erstellen einer ausgewählten Tabelle in BigQuery ein oder mehrere SQL-Anweisungen ausgeführt werden. Wenn Sie eine SQL-Anweisung ausführen möchten, nachdem Dataform eine ausgewählte Tabelle erstellt hat, fügen Sie die Anweisung dem post_operations-Block in der SQLX-Datei für die Tabellendefinition hinzu. Sie können dem post_operations-Block mehrere SQL-Anweisungen hinzufügen.

So erstellen Sie eine benutzerdefinierte SQL-Anweisung, die ausgeführt wird, nachdem Dataform eine bestimmte Tabelle erstellt hat:

  1. Rufen Sie Ihren Entwicklungsarbeitsbereich auf.

  2. Maximieren Sie im Bereich Dateien die Option definitions/.

  3. Öffnen Sie eine SQLX-Tabellendefinitionsdatei.

  4. Geben Sie außerhalb des Blocks config den Wert post_operations { ... } ein.

  5. Fügen Sie Ihre SQL-Anweisung in post_operations { ... } ein.

  6. Optional: Klicken Sie auf Formatieren.

Das folgende Codebeispiel zeigt post_operations-Anweisungen, mit denen Gruppen Zugriff auf die erstellte Tabelle gewährt wird:

    post_operations {
      GRANT `roles/bigquery.dataViewer`
      ON
      TABLE ${self()}
      TO "group:allusers@example.com", "user:otheruser@example.com"
    }

Tabellenerstellung deaktivieren

Wenn Sie verhindern möchten, dass Dataform eine ausgewählte Tabelle in BigQuery erstellt, können Sie die Tabelle in der entsprechenden SQLX-Datei für die Tabellendefinition deaktivieren. In Dataform wird eine deaktivierte Tabelle im Abhängigkeitsdiagramm beibehalten, sie wird jedoch nicht kompiliert und erstellt. Das kann beispielsweise nützlich sein, wenn eine Tabelle fehlschlägt und Sie nicht möchten, dass Ihr gesamter Workflow fehlschlägt, während Sie das Problem beheben.

So deaktivieren Sie eine Tabelle:

  1. Rufen Sie Ihren Entwicklungsarbeitsbereich auf.

  2. Maximieren Sie im Bereich Dateien die Option definitions/.

  3. Wählen Sie eine SQLX-Tabellendefinitionsdatei aus.

  4. Geben Sie im config-Block der Datei disabled: true ein.

  5. Optional: Klicken Sie auf Formatieren.

Das folgende Codebeispiel zeigt eine deaktivierte Tabelle:

  config {
    type: "table",
    disabled: true
  }

  select * from ${ref("source_data")}

Nächste Schritte