Extern partitionierte Daten laden

BigQuery kann Daten, die in Cloud Storage gespeichert sind, über ein Layout mit Hive-Partitionierung laden. Hive-Partitionierung bedeutet, dass die externen Daten in mehreren Dateien organisiert sind, wobei sie mithilfe einer bestimmten Namenskonvention in verschiedene Partitionen aufgeteilt werden. Weitere Informationen finden Sie unter Unterstützte Datenlayouts.

Standardmäßig werden die Daten nach dem Laden in BigQuery nicht partitioniert, sofern Sie nicht explizit eine partitionierte Tabelle erstellen.

Partitionierte Hive-Daten laden

Wählen Sie eine der folgenden Optionen aus, um partitionierte Hive-Daten zu laden:

Console

  1. Wechseln Sie in der Google Cloud Console zu BigQuery.

    BigQuery aufrufen

  2. Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie ein Dataset aus.
  3. Klicken Sie auf Aktionen ansehen und dann auf Tabelle erstellen. Der Bereich Tabelle erstellen wird geöffnet.
  4. Geben Sie im Bereich Quelle die folgenden Details an:
    1. Wählen Sie unter Tabelle erstellen aus die Option Google Cloud Storage aus.
    2. Geben Sie unter Datei aus Cloud Storage-Bucket auswählen den Pfad zum Cloud Storage-Ordner mithilfe von Platzhaltern ein. Beispiel: my_bucket/my_files* Der Cloud Storage-Bucket muss sich am selben Standort wie das Dataset befinden, das die Tabelle enthält, die Sie erstellen, anhängen oder überschreiben möchten.
    3. Wählen Sie in der Liste Dateiformat den Dateityp aus.
    4. Klicken Sie auf das Kästchen Quelldatenpartitionierung und geben Sie dann für Quell-URI-Präfix auswählen das Cloud Storage-URI-Präfix ein. Beispiel: gs://my_bucket/my_files
    5. Wählen Sie im Bereich Partitionsinferenzmodus eine der folgenden Optionen aus:
      • Typen automatisch ableiten: Legen Sie den Erkennungsmodus des Partitionsschemas auf AUTO fest.
      • Alle Spalten sind Strings: Legen Sie den Modus für die Erkennung des Partitionsschemas auf STRINGS fest.
      • Eigene bereitstellen: Legen Sie den Erkennungsmodus für das Partitionsschema auf CUSTOM fest und geben Sie die Schemainformationen für die Partitionierungsschlüssel manuell ein. Weitere Informationen finden Sie unter Benutzerdefiniertes Partitionierungsschlüsselschema bereitstellen.
    6. Optional: Wenn Sie einen Partitionsfilter für alle Abfragen für diese Tabelle benötigen, klicken Sie das Kästchen Partitionsfilter anfordern an. Der Partitionsfilter, den Sie dadurch obligatorisch machen, kann die Kosten senken und die Leistung verbessern. Weitere Informationen finden Sie unter Prädikatfilter für Partitionsschlüssel in Abfragen erforderlich.
  5. Geben Sie im Bereich Ziel die folgenden Details an:
    1. Wählen Sie unter Projekt das Projekt aus, in dem Sie die Tabelle erstellen möchten.
    2. Wählen Sie bei Dataset das Dataset aus, in dem Sie die Tabelle erstellen möchten.
    3. Geben Sie unter Tabelle den Namen der Tabelle ein, die Sie erstellen möchten.
    4. Wählen Sie als Tabellentyp die Option Native Tabelle aus .
  6. Geben Sie im Abschnitt Schema die Schemadefinition ein.
  7. Wählen Sie Automatisch erkennen aus, um die automatische Erkennung des Schemas zu aktivieren.
  8. Wenn Sie Zeilen mit zusätzlichen Spaltenwerten ignorieren möchten, die nicht mit dem Schema übereinstimmen, maximieren Sie den Abschnitt Erweiterte Optionen und wählen Sie Unbekannte Werte aus.
  9. Klicken Sie auf Tabelle erstellen.

SQL

Zum Erstellen einer extern partitionierten Tabelle verwenden Sie die Klausel WITH PARTITION COLUMNS der LOAD DATA-Anweisung, um die Details des Partitionsschemas anzugeben.

Ein Beispiel finden Sie unter Extern partitionierte Datei laden.

bq

Laden Sie partitionierte Hive-Daten mit der automatischen Erkennung des Partitionsschlüsseltyps:

bq load --source_format=ORC --hive_partitioning_mode=AUTO \
--hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix \
dataset.table gcs_uris

Laden Sie partitionierte Hive-Daten mit der Erkennung von Partitionsschlüsseln des Typs „String“:

bq load --source_format=CSV --autodetect \
--hive_partitioning_mode=STRINGS \
--hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix \
dataset.table gcs_uris

Laden Sie partitionierte Hive-Daten mit einem benutzerdefinierten Partitionsschlüsselschema, das mit dem Feld source\_uri\_prefix codiert ist:

bq load --source_format=JSON --hive_partitioning_mode=CUSTOM \
--hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix/partition_key_schema \
dataset.table gcs_uris file_schema

Das Schema für den Partitionierungsschlüssel wird unmittelbar nach dem Präfix des Quell-URI codiert. Geben Sie --hive_partitioning_source_uri_prefix im folgenden Format an:

--hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix/{key1:TYPE1}/{key2:TYPE2}/{key3:TYPE3}

API

Die Hive-Partitionierung wird unterstützt, wenn die HivePartitioningOptions in JobConfigurationLoad festgelegt werden.

Inkrementelle Ladevorgänge ausführen

Sehen Sie sich das folgende Datenlayout an:

gs://my_bucket/my_table/dt=2019-10-31/val=1/file1
gs://my_bucket/my_table/dt=2018-10-31/val=2/file2
gs://my_bucket/my_table/dt=2017-10-31/val=3/file3
gs://my_bucket/my_table/dt=2016-10-31/val=4/file4

So laden Sie nur Daten vom 31.10.2019:

  • Legen Sie den Hive-Partitionierungsmodus auf AUTO, STRINGS oder CUSTOM fest.
  • Legen Sie das Quell-URI-Präfix auf gs://my_bucket/my_table/ für die Hive-Partitionierungsmodi AUTO oder STRINGS fest. Geben Sie für CUSTOM gs://my_bucket/my_table/{dt:DATE}/{val:INTEGER} an.
  • Verwenden Sie den URI gs://my_bucket/my_table/dt=2019-10-31/*.
  • Die Daten werden mit den Spalten dt und val sowie den entsprechenden Werten 2019-10-31 und 1 geladen.

So laden Sie nur Daten aus bestimmten Dateien:

  • Legen Sie den Hive-Partitionierungsmodus auf AUTO, STRINGS oder CUSTOM fest.
  • Legen Sie das Quell-URI-Präfix auf gs://my_bucket/my_table/ für die Hive-Partitionierungsmodi AUTO oder STRINGS fest. Geben Sie für CUSTOM den Wert gs://my_bucket/my_table/{dt:DATE}/{val:INTEGER} an.
  • Verwenden Sie die URIs gs://my_bucket/my_table/dt=2017-10-31/val=3/file3,gs://my_bucket/my_table/dt=2016-10-31/val=4/file4.
  • Die Daten werden aus beiden Dateien mit den ausgefüllten Spalten dt und val geladen.

Partitionsschema

In den folgenden Abschnitten werden das standardmäßige Hive-partitionierte Layout und die von BigQuery unterstützten Schemaerkennungsmodi erläutert.

Unterstützte Datenlayouts

Hive-Partitionsschlüssel werden als normale Spalten angezeigt, wenn Sie Daten aus Cloud Storage abfragen. Die Daten müssen einem Standardlayout für Hive-Partitionierung entsprechen. Die folgenden Dateien folgen beispielsweise dem Standardlayout. Die Schlüssel/Wert-Paare werden als Verzeichnisse mit dem Gleichzeichen (=) als Trennzeichen konfiguriert und die Partitionierungsschlüssel haben immer dieselbe Reihenfolge:

gs://my_bucket/my_table/dt=2019-10-31/lang=en/my_filename
gs://my_bucket/my_table/dt=2018-10-31/lang=fr/my_filename

Das gemeinsame Präfix für den Quell-URI in diesem Beispiel ist gs://my_bucket/my_table.

Nicht unterstützte Datenlayouts

Wenn die Namen der Partitionierungsschlüssel nicht im Verzeichnispfad codiert sind, schlägt die Partitionierung des Partitionsschemas fehl. Sehen Sie sich zum Beispiel den folgenden Pfad an, in dem die Namen der Partitionsschlüssel nicht codiert sind:

gs://my_bucket/my_table/2019-10-31/en/my_filename

Dateien, deren Schema nicht in einheitlicher Reihenfolge angegeben ist, werden ebenfalls nicht erkannt. Sehen Sie sich zum Beispiel die folgenden beiden Dateien an, bei denen die Partitionierungsschlüssel in umgekehrter Reihenfolge codiert sind:

gs://my_bucket/my_table/dt=2019-10-31/lang=en/my_filename
gs://my_bucket/my_table/lang=fr/dt=2018-10-31/my_filename

Erkennungsmodi

BigQuery unterstützt drei Arten der Erkennung von Hive-Partitionsschemas:

  • AUTO: Schlüsselnamen und -typen werden automatisch erkannt. Die folgenden Typen können erkannt werden: STRING, INTEGER, DATE und TIMESTAMP.
  • STRINGS: Schlüsselnamen werden automatisch in den Typ STRING konvertiert.
  • CUSTOM: Das Schema des Partitionierungsschlüssels ist entsprechend der Angabe im Präfix des Quell-URI codiert.

Benutzerdefiniertes Schema für Partitionierungsschlüssel

Wenn Sie ein CUSTOM-Schema verwenden möchten, müssen Sie das Schema im Feld für das Quell-URI-Präfix angeben. Mit einem CUSTOM-Schema können Sie den Typ für jeden Partitionierungsschlüssel angeben. Wenn sich die Werte nicht korrekt als der angegebene Typ parsen lassen, tritt beim Laden ein Fehler auf.

Wenn Sie beispielsweise das Flag source_uri_prefix auf gs://my_bucket/my_table/{dt:DATE}/{val:STRING} setzen, behandelt BigQuery val als STRING, dt als DATE und verwendet gs://my_bucket/my_table als Quell-URI-Präfix für die übereinstimmenden Dateien

Beschränkungen

  • Bei der Unterstützung der Hive-Partitionierung wird vorausgesetzt, dass alle URI unmittelbar vor der Partitionscodierung ein gemeinsames Präfix für den Quell-URI haben: gs://BUCKET/PATH_TO_TABLE/.
  • Es wird angenommen, dass in der Verzeichnisstruktur einer Hive-partitionierten Tabelle dieselben Partitionierungsschlüssel in derselben Reihenfolge vorhanden sind. In einer Tabelle darf es dabei höchstens zehn Partitionierungsschlüssel geben.
  • Die Daten müssen einem Standardlayout für Hive-Partitionierung entsprechen.
  • Es darf keine Überschneidungen zwischen den Hive-Partitionierungsschlüsseln und den Spalten in den zugrunde liegenden Dateien geben.
  • Die Unterstützung gilt nur für GoogleSQL.

  • Es gelten alle Beschränkungen für das Laden aus Cloud Storage.

Nächste Schritte