Mit Datastream Daten in partitionierte Tabellen in BigQuery einlesen

Möglicherweise müssen Sie Ihre BigQuery-Tabellen in kleinere Segmente partitionieren, um die Abfrageleistung zu verbessern und die Kosten zu kontrollieren. Da Datastream keine partitionierten Tabellen in BigQuery 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

Je nach Anwendungsfall können Sie Ihre Tabellen in BigQuery mit einer der folgenden Optionen partitionieren.

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

  1. Schließen Sie die Tabelle von der Quellkonfiguration Ihres 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 die Verarbeitung aller Ereignisse für die Tabelle abgeschlossen hat.
  3. Erstellen Sie die partitionierte Tabelle in BigQuery. 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 oder benennen Sie die ursprüngliche Tabelle 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 einem der folgenden Ansätze:

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

      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. Achten Sie nach dem Erstellen der partitionierten Tabelle darauf, dass der max_staleness-Wert Ihren Anforderungen entspricht. Wenn Sie den Wert nicht festlegen, wird der Standardwert 0 verwendet. Weitere Informationen finden Sie unter BigQuery-Tabellen mit der Option max_staleness verwenden.

  3. Fügen Sie die Quelltabelle der Konfiguration Ihres Streams hinzu.

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