Zusätzliche Tabelleneinstellungen konfigurieren

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

Hinweise

  1. Öffnen Sie in der Google Cloud Console die Seite Dataform.

    Zu Dataform

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

  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 zu gewähren, damit Sie die Berechtigungen erhalten, die Sie zum Konfigurieren zusätzlicher Tabelleneinstellungen 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.

Tabelleneinstellungen überschreiben

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

Standardmäßig folgt eine Tabelle dem Schema und der Datenbankkonfiguration, die Sie in dataform.json festgelegt haben. Der Name einer Tabelle entspricht dem Namen der SQLX-Tabellendefinitionsdatei.

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

  1. Rufen Sie den Entwicklungsarbeitsbereich auf.

  2. Maximieren Sie im Bereich Dateien den Bereich 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 Namen der SQLX-Tabellendefinitionsdatei unterscheidet

  5. Optional: Klicken Sie auf Format.

Auf eine Tabelle mit einem überschriebenen Tabellennamen verweisen

  • Um auf eine Tabelle mit einem überschriebenen Tabellennamen zu verweisen, geben Sie in der Funktion ref den überschriebenen Tabellennamen ein, der in name: "" festgelegt ist.

Im folgenden Codebeispiel wird auf eine Tabelle verwiesen, deren Name mit overridden_name überschrieben wird:

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

SQL-Anweisung definieren, die vor der Tabellenerstellung ausgeführt werden soll

Sie können Dataform so konfigurieren, dass eine 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 in den Block pre_operations der SQLX-Tabellendefinitionsdatei ein.

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

  1. Rufen Sie den Entwicklungsarbeitsbereich auf.

  2. Maximieren Sie im Bereich Dateien den Bereich definitions/.

  3. Öffnen Sie eine SQLX-Tabellendefinitionsdatei.

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

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

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

  7. Optional: Klicken Sie auf Format.

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 der Tabellenerstellung ausgeführt werden soll

Sie können Dataform so konfigurieren, dass eine oder mehrere SQL-Anweisungen ausgeführt werden, nachdem Sie eine ausgewählte Tabelle in BigQuery erstellt haben. Wenn Sie eine SQL-Anweisung ausführen möchten, nachdem Dataform eine ausgewählte Tabelle erstellt hat, fügen Sie die Anweisung in den Block post_operations der SQLX-Tabellendefinitionsdatei ein. Sie können dem Block post_operations 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 den Entwicklungsarbeitsbereich auf.

  2. Maximieren Sie im Bereich Dateien den Bereich definitions/.

  3. Öffnen Sie eine SQLX-Tabellendefinitionsdatei.

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

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

  6. Optional: Klicken Sie auf Format.

Das folgende Codebeispiel zeigt post_operations-Anweisungen, die Gruppen Zugriff auf die erstellte Tabelle gewähren:

    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 zugehörigen SQLX-Tabellendefinitionsdatei deaktivieren. Dataform behält eine deaktivierte Tabelle im Abhängigkeitsdiagramm bei, kompiliert und erstellt sie aber nicht. Dies kann beispielsweise nützlich sein, wenn eine Tabelle ausfällt und Sie nicht möchten, dass der gesamte Workflow fehlschlägt, während Sie das Problem beheben.

So deaktivieren Sie eine Tabelle:

  1. Rufen Sie den Entwicklungsarbeitsbereich auf.

  2. Maximieren Sie im Bereich Dateien den Bereich definitions/.

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

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

  5. Optional: Klicken Sie auf Format.

Das folgende Codebeispiel zeigt eine deaktivierte Tabelle:

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

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

Nächste Schritte