Daten mit Datastream in partitionierte Tabellen in BigQuery aufnehmen

Möglicherweise müssen Sie Ihre BigQuery-Tabellen in kleinere Segmente partitionieren, um die Abfrageleistung zu verbessern und die Kosten zu kontrollieren. Da Datastream das Partitionieren von Tabellen in BigQuery nicht unterstützt, müssen Sie die Partitionen manuell hinzufügen, bevor Sie den Stream starten. Allgemeine Informationen zur Partitionierung in BigQuery finden Sie unter Einführung in partitionierte Tabellen.

Tabellen in BigQuery partitionieren

Verwenden Sie eine der folgenden Optionen, um Ihre Tabellen in BigQuery zu partitionieren.

Option 1: Die Tabelle ist bereits in BigQuery vorhanden und in einem Stream enthalten

  1. Schließen Sie die Tabelle aus der Quellkonfiguration des Streams aus. Weitere Informationen zum Ein- und Ausschließen von Objekten aus der Quellkonfiguration finden Sie unter Quelldatenbanken konfigurieren.
  2. Warten Sie einige Minuten, bis Datastream alle Ereignisse für die Tabelle verarbeitet hat.
  3. Partitionierte Tabelle in BigQuery erstellen Wenn Sie die Daten behalten möchten, die sich bereits in der ursprünglichen BigQuery-Tabelle befanden, geben Sie der Tabelle einen anderen, temporären Namen.
  4. Kopieren Sie die Daten aus der ursprünglichen Tabelle in die neue partitionierte Tabelle.
  5. Löschen Sie die ursprüngliche Tabelle oder benennen Sie sie um.
  6. Ändern Sie den temporären Namen der neuen Tabelle in den Namen der ursprünglichen Tabelle.
  7. Fügen Sie die Quelltabelle der Konfiguration Ihres Streams hinzu.

Option 2: Die Tabelle ist in BigQuery nicht vorhanden

  1. Erstellen Sie die Tabelle in BigQuery mit einer der folgenden Methoden:

    • Verwenden Sie das BigQuery Migration Toolkit.
    • Manuell eine Datastream-kompatible BigQuery-Tabelle erstellen Wenn Sie beispielsweise eine Tabelle erstellen und die Daten anhand der Spalte TIMESTAMP partitionieren möchten, können Sie eine Abfrage verwenden, die der folgenden ähnelt:

      CREATE TABLE dataset.partitioned_table (
      'id' INT64,
      'name' STRING
      'update_date' DATETIME,
      'datastream_metadata' STRUCT<'uuid' STRING, 'source_timestamp' INT64>,
      PRIMARY KEY ('id') NOT ENFORCED
      )
      PARTITION BY TIMESTAMP(update_date)
      
  2. Nachdem Sie die partitionierte Tabelle erstellt haben, müssen Sie darauf achten, dass ihr max_staleness-Wert Ihren Anforderungen entspricht. Wenn Sie den Wert nicht festlegen, wird der Standardwert 0 verwendet. Wenn Sie diesen Wert auf 0 belassen, erhalten Sie die aktuellsten Daten, aber es entstehen erhebliche Kosten. Informationen dazu, wie Sie den optimalen Wert für Ihre Tabelle ermitteln, finden Sie unter BigQuery-Tabellen mit der Option max_staleness verwenden.

  3. Quelltabelle zur Konfiguration des Streams hinzufügen

  4. Wenn Sie für den Stream einen manuellen Backfill festgelegt haben, können Sie optional einen Backfill für die Tabelle starten.