Extern partitionierte Daten verwenden
Sie können mit externen BigQuery-Tabellen partitionierte Daten in den folgenden Datenspeichern abfragen:
Die extern partitionierten Daten müssen ein Standardlayout für Hive-Partitionierung verwenden und in einem der folgenden Formate vorliegen:
- Avro
- CSV
- JSON
- ORC
- Parquet
Zum Abfragen extern partitionierter Daten müssen Sie eine BigLake-Tabelle oder eine externe Tabelle erstellen. Wir empfehlen die Verwendung von BigLake-Tabellen, da Sie damit eine detaillierte Sicherheit auf Tabellenebene erzwingen können. Informationen zu BigLake und externen Tabellen finden Sie unter Einführung in BigLake-Tabellen und Einführung in externe Tabellen.
Sie aktivieren die Unterstützung der Hive-Partitionierung. Legen Sie dazu die entsprechenden Optionen in der Tabellendefinitionsdatei fest. Eine Anleitung zum Abfragen von verwalteten partitionierten Tabellen finden Sie unter Einführung in partitionierte Tabellen.
Partitionsschema
In den folgenden Abschnitten werden das standardmäßige Hive-partitionierte Layout und die von BigQuery unterstützten Schemaerkennungsmodi erläutert.
Damit keine unnötigen Dateien gelesen und die Leistung verbessert wird, können Sie Prädikatfilter für Partitionsschlüssel in Abfragen verwenden.
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:STRINGS
: Schlüsselnamen werden automatisch in den TypSTRING
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
Partitionsbereinigung
BigQuery bereinigt Partitionen nach Möglichkeit mithilfe von Abfrageprädikaten für die Partitionierungsschlüssel. So vermeiden Sie es, dass BigQuery unnötige Dateien liest, was die Leistung verbessert.
Prädikatfilter für Partitionsschlüssel in Abfragen
Wenn Sie eine extern partitionierte Tabelle erstellen, können Sie die Verwendung von Prädikatfiltern für Partitionsschlüssel anfordern, wenn Sie die Option requirePartitionFilter
unter HivePartitioningOptions aktivieren.
Wenn diese Option aktiviert ist, führen Versuche, die extern partitionierte Tabelle ohne Angabe einer WHERE
-Klausel abzufragen, zu folgendem Fehler: Cannot query over table <table_name> without a filter over column(s)
<partition key names> that can be used for partition elimination
.
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.
Es wird ausschließlich GoogleSQL unterstützt.
Für die Abfrage externer Quellen von Daten, die in Cloud Storage gespeichert sind, gelten die üblichen Einschränkungen.