Amazon S3 BigLake-Tabellen erstellen
In diesem Dokument wird die Erstellung einer BigLake-Tabelle in Amazon Simple Storage Service (Amazon S3) beschrieben. Mit einer BigLake-Tabelle können Sie mithilfe der Zugriffsdelegation Daten in Amazon S3 abfragen. Durch die Zugriffsdelegation wird der Zugriff auf die BigLake-Tabelle vom Zugriff auf den zugrunde liegenden Datenspeicher entkoppelt.
Informationen zum Datenfluss zwischen BigQuery und Amazon S3 finden Sie unter Datenfluss beim Abfragen von Daten.
Hinweis
Prüfen Sie, ob Sie eine Verbindung für den Zugriff auf Amazon S3-Daten haben.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle BigQuery Admin (roles/bigquery.admin
) für Ihr Dataset zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen einer externen Tabelle benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Diese vordefinierte Rolle enthält die Berechtigungen, die zum Erstellen externer Tabellen erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Zum Erstellen einer externen Tabelle sind die folgenden Berechtigungen erforderlich:
-
bigquery.tables.create
-
bigquery.connections.delegate
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Dataset erstellen
Bevor Sie eine externe Tabelle erstellen, müssen Sie ein Dataset in der unterstützten Region erstellen. Wählen Sie eine der folgenden Optionen:Console
Rufen Sie die Seite BigQuery auf.
- Wählen Sie im Bereich Explorer das Projekt aus, in dem Sie das Dataset erstellen möchten.
- Maximieren Sie die Option Aktionen ansehen und klicken Sie auf Dataset erstellen.
- Geben Sie auf der Seite Dataset erstellen die folgenden Details an:
- Geben Sie für die Dataset-ID einen eindeutigen Dataset-Namen ein.
- Wählen Sie für Speicherort der Daten eine unterstützte Region aus.
- Wenn Tabellen automatisch gelöscht werden sollen, klicken Sie das Kästchen Tabellenablauf aktivieren an und legen Sie das Standardmäßige Höchstalter für Tabellen in Tagen fest. Daten in Amazon S3 werden nach Ablauf der Tabelle nicht gelöscht.
- Wenn Sie die Standardsortierung verwenden möchten, maximieren Sie den Abschnitt Erweiterte Optionen und wählen dann die Option Standardsortierung aktivieren.
- Klicken Sie auf Dataset erstellen.
SQL
Verwenden Sie die DDL-Anweisung CREATE SCHEMA
.
Im folgenden Beispiel wird ein Dataset in der Region aws-us-east-1
erstellt:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
CREATE SCHEMA mydataset OPTIONS ( location = 'aws-us-east-1');
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
bq
Erstellen Sie in einer Befehlszeilenumgebung mit dem Befehl bq mk
ein Dataset:
bq --location=LOCATION mk \ --dataset \ PROJECT_ID:DATASET_NAME
Der Parameter --project_id
überschreibt das Standardprojekt.
Ersetzen Sie Folgendes:
LOCATION
: der Standort Ihres DatasetsInformationen zu unterstützten Regionen finden Sie unter Standorte. Nachdem Sie ein Dataset erstellt haben, können Sie seinen Standort nicht mehr ändern. Mit der Datei
.bigqueryrc
können Sie für den Standort einen Standardwert festlegen.PROJECT_ID
: Ihre Projekt-ID.DATASET_NAME
: Der Name des Datasets, das Sie erstellen möchten.Wenn Sie ein Dataset in einem anderen Projekt als dem Standardprojekt erstellen möchten, fügen Sie die Projekt-ID im Format
PROJECT_ID:DATASET_NAME
dem Dataset-Namen hinzu.
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
BigLake-Tabellen für nicht partitionierte Daten erstellen
Wählen Sie eine der folgenden Optionen aus:
Console
Rufen Sie die Seite BigQuery auf.
Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie dann ein Dataset aus.
Klicken Sie im Abschnitt Dataset-Informationen auf
Tabelle erstellen.Gehen Sie auf der Seite Tabelle erstellen im Abschnitt Quelle so vor:
- Wählen Sie unter Tabelle erstellen aus die Option Amazon S3 aus.
- Geben Sie unter S3-Pfad auswählen einen URI ein, der auf die Amazon S3-Daten im Format
s3://BUCKET_NAME/PATH
verweist. Ersetzen SieBUCKET_NAME
durch den Namen des Amazon S3-Buckets. Die Region des Buckets sollte mit der Region des Datasets übereinstimmen. Ersetzen SiePATH
durch den Pfad, in den Sie die exportierte Datei schreiben möchten. Dieser kann den Platzhalter*
enthalten. - Wählen Sie für Dateiformat das Datenformat in Amazon S3 aus. Unterstützte Formate sind: AVRO, CSV, DELTA_LAKE, ICEBERG, JSONL, ORC, and PARQUET.
Geben Sie im Bereich Ziel die folgenden Details an:
- Wählen Sie für Dataset das entsprechende Dataset aus.
- Geben Sie im Feld Tabelle den Namen der Tabelle ein.
- Prüfen Sie, ob Tabellentyp auf Externe Tabelle festgelegt ist.
- Wählen Sie unter Verbindungs-ID im Drop-down die entsprechende Verbindungs-ID aus. Informationen zu Verbindungen finden Sie unter Verbindung zu Amazon S3 herstellen.
Im Abschnitt Schema können Sie entweder die automatische Schemaerkennung aktivieren oder ein Schema manuell angeben, wenn Sie eine Quelldatei haben. Wenn Sie keine Quelldatei haben, müssen Sie ein Schema manuell angeben.
Klicken Sie auf die Option Automatisch erkennen, um die automatische Schemaerkennung zu aktivieren.
Wenn Sie ein Schema manuell angeben möchten, klicken Sie das Kästchen Automatisch erkennen nicht an. Klicken Sie auf Als Text bearbeiten und geben Sie das Tabellenschema als JSON-Array ein.
Klicken Sie auf Tabelle erstellen.
SQL
Verwenden Sie zum Erstellen einer BigLake-Tabelle die Anweisung CREATE EXTERNAL TABLE
mit der WITH CONNECTION
-Klausel:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
CREATE EXTERNAL TABLE DATASET_NAME.TABLE_NAME WITH CONNECTION `AWS_LOCATION.CONNECTION_NAME` OPTIONS ( format = "DATA_FORMAT", uris = ["S3_URI"], max_staleness = STALENESS_INTERVAL, metadata_cache_mode = 'CACHE_MODE');
Ersetzen Sie Folgendes:
DATASET_NAME
: der Name des von Ihnen erstellten DatasetsTABLE_NAME
: der Name, den Sie dieser Tabelle geben möchtenAWS_LOCATION
: ein AWS-Standort in Google Cloud, z. B. "aws-us-east-1"CONNECTION_NAME
: der Name der von Ihnen erstellten VerbindungDATA_FORMAT
: Alle unterstützten föderierten BigQuery-Formate, z. B.AVRO
,CSV
,DELTA_LAKE
,ICEBERG
oderPARQUET
(Vorschau)S3_URI
: ein URI, der auf die S3-Daten verweist, z. B.s3://bucket/path
STALENESS_INTERVAL
: gibt an, ob im Cache gespeicherte Metadaten von Vorgängen für die BigLake-Tabelle verwendet werden und wie aktuell die im Cache gespeicherten Metadaten sein müssen, damit sie vom Vorgang verwendet werden können. Weitere Informationen zu Überlegungen zum Metadaten-Caching finden Sie unter Leistungsmetadaten-Caching.Geben Sie 0 an, um das Caching von Metadaten zu deaktivieren. Das ist die Standardeinstellung.
Geben Sie zum Aktivieren des Metadaten-Cachings für das Intervallliteral einen Wert zwischen 30 Minuten und 7 Tagen an. Beispiel: Geben Sie
INTERVAL 4 HOUR
für ein Veralterungsintervall von vier Stunden an. Mit diesem Wert verwenden Vorgänge im Zusammenhang mit der Tabelle im Cache gespeicherte Metadaten, wenn sie innerhalb der letzten vier Stunden aktualisiert wurden. Wenn die im Cache gespeicherten Metadaten älter sind, ruft der Vorgang stattdessen Metadaten aus Amazon S3 ab.CACHE_MODE
: gibt an, ob der Metadaten-Cache automatisch oder manuell aktualisiert wird. Weitere Informationen zu Überlegungen zum Metadaten-Caching finden Sie unter Leistungsmetadaten-Caching.Legen Sie
AUTOMATIC
fest, damit der Metadaten-Cache in einem systemdefinierten Intervall aktualisiert wird, normalerweise zwischen 30 und 60 Minuten.Legen Sie
MANUAL
fest, wenn Sie den Metadaten-Cache nach einem von Ihnen bestimmten Zeitplan aktualisieren möchten. In diesem Fall können Sie den SystemvorgangBQ.REFRESH_EXTERNAL_METADATA_CACHE
aufrufen, um den Cache zu aktualisieren.Sie müssen
CACHE_MODE
festlegen, wennSTALENESS_INTERVAL
auf einen Wert größer als 0 festgelegt ist.
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
Beispiel:
CREATE EXTERNAL TABLE awsdataset.awstable WITH CONNECTION `aws-us-east-1.s3-read-connection` OPTIONS ( format="CSV", uris=["s3://s3-bucket/path/file.csv"], max_staleness = INTERVAL 1 DAY, metadata_cache_mode = 'AUTOMATIC' );
bq
Erstellen Sie eine Tabellendefinitionsdatei:
bq mkdef \ --source_format=DATA_FORMAT \ --connection_id=AWS_LOCATION.CONNECTION_NAME \ --metadata_cache_mode=CACHE_MODE \ S3_URI > table_def
Ersetzen Sie Folgendes:
DATA_FORMAT
: alle unterstützten föderierten BigQuery-Formate, wie z. B.AVRO
,CSV
,DELTA_LAKE
,ICEBERG
oderPARQUET
S3_URI
: ein URI, der auf die Amazon S3-Daten verweist, z. B.s3://bucket/path
AWS_LOCATION
: AWS-Standort in Google Cloud, z. B.aws-us-east-1
CONNECTION_NAME
: Name der von Ihnen erstellten VerbindungCACHE_MODE
: gibt an, ob der Metadaten-Cache automatisch oder manuell aktualisiert wird. Sie müssen dieses Flag nur angeben, wenn Sie auch das Flag--max_staleness
im nachfolgenden Befehlbq mk
verwenden möchten, um das Metadaten-Caching zu aktivieren. Weitere Informationen zu Überlegungen zum Metadaten-Caching finden Sie unter Metadaten-Caching für bessere Leistung.Legen Sie
AUTOMATIC
fest, damit der Metadaten-Cache in einem systemdefinierten Intervall aktualisiert wird, normalerweise zwischen 30 und 60 Minuten.Legen Sie
MANUAL
fest, wenn Sie den Metadaten-Cache nach einem von Ihnen bestimmten Zeitplan aktualisieren möchten. In diesem Fall können Sie den SystemvorgangBQ.REFRESH_EXTERNAL_METADATA_CACHE
aufrufen, um den Cache zu aktualisieren. Sie müssenCACHE_MODE
festlegen, wennSTALENESS_INTERVAL
auf einen Wert größer als 0 festgelegt ist.
Erstellen Sie als Nächstes die BigLake-Tabelle:
bq mk --max_staleness=STALENESS_INTERVAL --external_table_definition=table_def DATASET_NAME.TABLE_NAME
Ersetzen Sie Folgendes:
STALENESS_INTERVAL
: gibt an, ob im Cache gespeicherte Metadaten von Vorgängen für die BigLake-Tabelle verwendet werden und wie aktuell die im Cache gespeicherten Metadaten sein müssen, damit sie vom Vorgang verwendet werden können. Weitere Informationen zu Überlegungen zum Metadaten-Caching finden Sie unter Leistungsmetadaten-Caching.Geben Sie 0 an, um das Caching von Metadaten zu deaktivieren. Das ist die Standardeinstellung.
Geben Sie zum Aktivieren des Metadaten-Cachings für das Intervallliteral einen Wert zwischen 30 Minuten und 7 Tagen an. Beispiel: Geben Sie
INTERVAL 4 HOUR
für ein Veralterungsintervall von vier Stunden an. Mit diesem Wert verwenden Vorgänge im Zusammenhang mit der Tabelle im Cache gespeicherte Metadaten, wenn sie innerhalb der letzten vier Stunden aktualisiert wurden. Wenn die im Cache gespeicherten Metadaten älter sind, ruft der Vorgang stattdessen Metadaten aus Amazon S3 ab.DATASET_NAME
: Name des von Ihnen erstellten DatasetsTABLE_NAME
: Name, den Sie dieser Tabelle geben möchten
Mit dem folgenden Befehl wird beispielsweise eine neue BigLake-Tabelle namens awsdataset.awstable
erstellt, die die im Pfad s3://s3-bucket/path/file.csv
gespeicherten Amazon S3-Daten abfragen kann und eine Leseverbindung am Standort aws-us-east-1
hat:
bq mkdef \ --autodetect \ --source_format=CSV \ --connection_id=aws-us-east-1.s3-read-connection \ --metadata_cache_mode=AUTOMATIC \ s3://s3-bucket/path/file.csv > table_def bq mk --max_staleness=INTERVAL "1" HOUR \ --external_table_definition=table_def awsdataset.awstable
API
Rufen Sie die API-Methode tables.insert
auf und erstellen Sie eine ExternalDataConfiguration
in der Ressource Table
, die Sie übergeben.
Geben Sie das Attribut schema
an oder setzen Sie das Attribut autodetect
auf true
, um die automatische Schemaerkennung für unterstützte Datenquellen zu aktivieren.
Geben Sie das Attribut connectionId
an, um die Verbindung zu identifizieren, die für die Verbindung mit Amazon S3 verwendet werden soll.
Java
Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
BigLake-Tabellen für partitionierte Daten erstellen
Sie können eine BigLake-Tabelle für partitionierte Hive-Daten in Amazon S3 erstellen. Nachdem Sie eine extern partitionierte Tabelle erstellt haben, können Sie den Partitionsschlüssel nicht mehr ändern. Sie müssen die Tabelle neu erstellen, um den Partitionierungsschlüssel zu ändern.
Wählen Sie eine der folgenden Optionen, um eine BigLake-Tabelle anhand partitionierter Hive-Daten zu erstellen:
Console
Rufen Sie die Seite BigQuery auf.
Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie ein Dataset aus.
Klicken Sie auf
Aktionen ansehen und dann auf Tabelle erstellen. Der Bereich Tabelle erstellen wird geöffnet.Geben Sie im Bereich Quelle die folgenden Details an:
Wählen Sie unter Tabelle erstellen aus die Option Amazon S3 aus.
Geben Sie den Pfad zum Ordner mit Platzhaltern an. Beispiel:
s3://mybucket/*
Der Ordner muss sich am selben Standort wie das Dataset befinden, das die Tabelle enthält, die Sie erstellen, anhängen oder überschreiben möchten.
Wählen Sie in der Liste Dateiformat den Dateityp aus.
Klicken Sie auf das Kästchen Quelldatenpartitionierung und geben Sie die folgenden Details an:
- Geben Sie unter Quell-URI-Präfix auswählen das URI-Präfix ein. Beispiel:
s3://mybucket/my_files
. - 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.
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.
- Typen automatisch ableiten: Legen Sie den Erkennungsmodus des Partitionsschemas auf
- Geben Sie unter Quell-URI-Präfix auswählen das URI-Präfix ein. Beispiel:
Geben Sie im Bereich Ziel die folgenden Details an:
- Wählen Sie unter Projekt das Projekt aus, in dem Sie die Tabelle erstellen möchten.
- Wählen Sie bei Dataset das Dataset aus, in dem Sie die Tabelle erstellen möchten.
- Geben Sie unter Tabelle den Namen der Tabelle ein, die Sie erstellen möchten.
- Prüfen Sie, ob für Tabellentyp die Option Externe Tabelle ausgewählt ist.
- Wählen Sie unter Verbindungs-ID die Verbindung aus, die Sie zuvor erstellt haben.
Im Abschnitt Schema können Sie entweder die automatische Schemaerkennung aktivieren oder ein Schema manuell angeben, wenn Sie eine Quelldatei haben. Wenn Sie keine Quelldatei haben, müssen Sie ein Schema manuell angeben.
Klicken Sie auf die Option Automatisch erkennen, um die automatische Schemaerkennung zu aktivieren.
Wenn Sie ein Schema manuell angeben möchten, klicken Sie das Kästchen Automatisch erkennen nicht an. Klicken Sie auf Als Text bearbeiten und geben Sie das Tabellenschema als JSON-Array ein.
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.
Klicken Sie auf Tabelle erstellen.
SQL
Verwenden Sie die DDL-Anweisung CREATE EXTERNAL TABLE
:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
CREATE EXTERNAL TABLE `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME` WITH PARTITION COLUMNS ( PARTITION_COLUMN PARTITION_COLUMN_TYPE, ) WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID` OPTIONS ( hive_partition_uri_prefix = "HIVE_PARTITION_URI_PREFIX", uris=['FILE_PATH'], format ="TABLE_FORMAT" max_staleness = STALENESS_INTERVAL, metadata_cache_mode = 'CACHE_MODE' );
Ersetzen Sie Folgendes:
PROJECT_ID
: der Name Ihres Projekts, in dem Sie die Tabelle erstellen möchten, z. B.myproject
DATASET
: der Name des BigQuery-Datasets, in dem Sie die Tabelle erstellen möchten, z. B.mydataset
EXTERNAL_TABLE_NAME
: der Name der Tabelle, die Sie erstellen möchten, z. B.mytable
PARTITION_COLUMN
: der Name der Partitionierungsspalte.PARTITION_COLUMN_TYPE
: der Typ der PartitionierungsspalteREGION
: die Region, die die Verbindung enthält, z. B.us
CONNECTION_ID
: der Name der Verbindung, z. B.myconnection
HIVE_PARTITION_URI_PREFIX
: Hive-Partitionierungs-URI-Präfix, z. B.:s3://mybucket/
FILE_PATH
: Pfad zur Datenquelle für die externe Tabelle, die Sie erstellen möchten, z. B.:s3://mybucket/*.parquet
TABLE_FORMAT
: das Format der Tabelle, die Sie erstellen möchten, z. B.PARQUET
STALENESS_INTERVAL
: gibt an, ob im Cache gespeicherte Metadaten von Vorgängen für die BigLake-Tabelle verwendet werden und wie aktuell die im Cache gespeicherten Metadaten sein müssen, damit sie vom Vorgang verwendet werden können. Weitere Informationen zu Überlegungen zum Metadaten-Caching finden Sie unter Leistungsmetadaten-Caching.Geben Sie 0 an, um das Caching von Metadaten zu deaktivieren. Das ist die Standardeinstellung.
Geben Sie zum Aktivieren des Metadaten-Cachings für das Intervallliteral einen Wert zwischen 30 Minuten und 7 Tagen an. Beispiel: Geben Sie
INTERVAL 4 HOUR
für ein Veralterungsintervall von vier Stunden an. Mit diesem Wert verwenden Vorgänge im Zusammenhang mit der Tabelle im Cache gespeicherte Metadaten, wenn sie innerhalb der letzten vier Stunden aktualisiert wurden. Wenn die im Cache gespeicherten Metadaten älter sind, ruft der Vorgang stattdessen Metadaten aus Amazon S3 ab.CACHE_MODE
: gibt an, ob der Metadaten-Cache automatisch oder manuell aktualisiert wird. Weitere Informationen zu Überlegungen zum Metadaten-Caching finden Sie unter Leistungsmetadaten-Caching.Legen Sie
AUTOMATIC
fest, damit der Metadaten-Cache in einem systemdefinierten Intervall aktualisiert wird, normalerweise zwischen 30 und 60 Minuten.Legen Sie
MANUAL
fest, wenn Sie den Metadaten-Cache nach einem von Ihnen bestimmten Zeitplan aktualisieren möchten. In diesem Fall können Sie den SystemvorgangBQ.REFRESH_EXTERNAL_METADATA_CACHE
aufrufen, um den Cache zu aktualisieren.Sie müssen
CACHE_MODE
festlegen, wennSTALENESS_INTERVAL
auf einen Wert größer als 0 festgelegt ist.
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
Beispiele
Im folgenden Beispiel wird eine BigLake-Tabelle über partitionierte Daten in Amazon S3 erstellt. Das Schema wird automatisch erkannt.
CREATE EXTERNAL TABLE `my_dataset.my_table` WITH PARTITION COLUMNS ( sku STRING, ) WITH CONNECTION `us.my-connection` OPTIONS( hive_partition_uri_prefix = "s3://mybucket/products", uris = ['s3://mybucket/products/*'] max_staleness = INTERVAL 1 DAY, metadata_cache_mode = 'AUTOMATIC' );
bq
Verwenden Sie zuerst den Befehl bq mkdef
, um eine Tabellendefinitionsdatei zu erstellen:
bq mkdef \ --source_format=SOURCE_FORMAT \ --connection_id=REGION.CONNECTION_ID \ --hive_partitioning_mode=PARTITIONING_MODE \ --hive_partitioning_source_uri_prefix=URI_SHARED_PREFIX \ --require_hive_partition_filter=BOOLEAN \ --metadata_cache_mode=CACHE_MODE \ URIS > DEFINITION_FILE
Ersetzen Sie Folgendes:
SOURCE_FORMAT
: das Format der externen Datenquelle Beispiel:CSV
.REGION
: Die Region, die die Verbindung enthält, z. B.us
.CONNECTION_ID
: der Name der Verbindung, z. B.myconnection
PARTITIONING_MODE
: der Hive-Partitionierungsmodus. Verwenden Sie einen der folgenden Werte:AUTO
: Schlüsselnamen und -typen automatisch erkennen.STRINGS
: Schlüsselnamen automatisch in Strings konvertieren.CUSTOM
: Schlüsselschema im Präfix des Quell-URI codieren.
URI_SHARED_PREFIX
: das Präfix des Quell-URI.BOOLEAN
gibt an, ob ein Prädikatfilter zum Zeitpunkt der Abfrage erforderlich ist. Dieses Flag ist optional. Der Standardwert istfalse
.CACHE_MODE
: gibt an, ob der Metadaten-Cache automatisch oder manuell aktualisiert wird. Sie müssen dieses Flag nur angeben, wenn Sie auch das Flag--max_staleness
im nachfolgenden Befehlbq mk
verwenden möchten, um das Metadaten-Caching zu aktivieren. Weitere Informationen zu Überlegungen zum Metadaten-Caching finden Sie unter Metadaten-Caching für bessere Leistung.Legen Sie
AUTOMATIC
fest, damit der Metadaten-Cache in einem systemdefinierten Intervall aktualisiert wird, normalerweise zwischen 30 und 60 Minuten.Legen Sie
MANUAL
fest, wenn Sie den Metadaten-Cache nach einem von Ihnen bestimmten Zeitplan aktualisieren möchten. In diesem Fall können Sie den SystemvorgangBQ.REFRESH_EXTERNAL_METADATA_CACHE
aufrufen, um den Cache zu aktualisieren. Sie müssenCACHE_MODE
festlegen, wennSTALENESS_INTERVAL
auf einen Wert größer als 0 festgelegt ist.URIS
: der Pfad zum Amazon S3-Ordner im Platzhalterformat.DEFINITION_FILE
: der Pfad zur Tabellendefinitionsdatei auf Ihrem lokalen Rechner.
Wenn PARTITIONING_MODE
den Wert CUSTOM
hat, fügen Sie das Partitionsschlüsselschema im Präfix des Quell-URI im folgenden Format ein:
--hive_partitioning_source_uri_prefix=URI_SHARED_PREFIX/{KEY1:TYPE1}/{KEY2:TYPE2}/...
Verwenden Sie nach dem Erstellen der Tabellendefinitionsdatei den Befehl bq mk
, um die BigLake-Tabelle zu erstellen:
bq mk --max_staleness=STALENESS_INTERVAL \ --external_table_definition=DEFINITION_FILE \ DATASET_NAME.TABLE_NAME \ SCHEMA
Ersetzen Sie Folgendes:
STALENESS_INTERVAL
: gibt an, ob im Cache gespeicherte Metadaten von Vorgängen für die BigLake-Tabelle verwendet werden und wie aktuell die im Cache gespeicherten Metadaten sein müssen, damit sie vom Vorgang verwendet werden können. Weitere Informationen zu Überlegungen zum Metadaten-Caching finden Sie unter Leistungsmetadaten-Caching.Geben Sie 0 an, um das Caching von Metadaten zu deaktivieren. Das ist die Standardeinstellung.
Geben Sie zum Aktivieren des Metadaten-Cachings für das Intervallliteral einen Wert zwischen 30 Minuten und 7 Tagen an. Beispiel: Geben Sie
INTERVAL 4 HOUR
für ein Veralterungsintervall von vier Stunden an. Mit diesem Wert verwenden Vorgänge im Zusammenhang mit der Tabelle im Cache gespeicherte Metadaten, wenn sie innerhalb der letzten vier Stunden aktualisiert wurden. Wenn die im Cache gespeicherten Metadaten älter sind, ruft der Vorgang stattdessen Metadaten aus Amazon S3 ab.DEFINITION_FILE
: der Pfad zur Tabellendefinitionsdatei.DATASET_NAME
: der Name des Datasets, das die Tabelle enthältTABLE_NAME
: Der Name der Tabelle, die Sie erstellen.SCHEMA
: gibt einen Pfad zu einer JSON-Schemadatei oder das Schema im Formatfield:data_type,field:data_type,...
an. Wenn Sie die automatische Schemaerkennung verwenden möchten, lassen Sie dieses Argument weg.
Beispiele
Im folgenden Beispiel wird der Hive-Partitionierungsmodus AUTO
für Amazon S3-Daten verwendet:
bq mkdef --source_format=CSV \
--connection_id=us.my-connection \
--hive_partitioning_mode=AUTO \
--hive_partitioning_source_uri_prefix=s3://mybucket/myTable \
--metadata_cache_mode=AUTOMATIC \
s3://mybucket/* > mytable_def
bq mk --max_staleness=INTERVAL "1" HOUR \
--external_table_definition=mytable_def \
mydataset.mytable \
Region:STRING,Quarter:STRING,Total_sales:INTEGER
Im folgenden Beispiel wird der Hive-Partitionierungsmodus STRING
für Amazon S3-Daten verwendet:
bq mkdef --source_format=CSV \
--connection_id=us.my-connection \
--hive_partitioning_mode=STRING \
--hive_partitioning_source_uri_prefix=s3://mybucket/myTable \
--metadata_cache_mode=AUTOMATIC \
s3://mybucket/myTable/* > mytable_def
bq mk --max_staleness=INTERVAL "1" HOUR \
--external_table_definition=mytable_def \
mydataset.mytable \
Region:STRING,Quarter:STRING,Total_sales:INTEGER
API
Wenn Sie die Hive-Partitionierung mithilfe der BigQuery API festlegen möchten, fügen Sie das hivePartitioningOptions
-Objekt in das ExternalDataConfiguration
-Objekt ein, wenn Sie die Tabellendefinitionsdatei erstellen.
Zum Erstellen einer BigLake-Tabelle müssen Sie auch einen Wert für das Feld connectionId
angeben.
Wenn Sie das Feld hivePartitioningOptions.mode
auf CUSTOM
festlegen, müssen Sie das Schema für den Partitionierungsschlüssel im Feld hivePartitioningOptions.sourceUriPrefix
folgendermaßen codieren: s3://BUCKET/PATH_TO_TABLE/{KEY1:TYPE1}/{KEY2:TYPE2}/...
Wenn Sie die Verwendung eines Prädikatfilters zum Zeitpunkt der Abfrage erzwingen möchten, legen Sie das Feld hivePartitioningOptions.requirePartitionFilter
auf true
fest.
Delta Lake-Tabellen
Wenn Sie Feedback oder Unterstützung für dieses Feature benötigen, senden Sie eine E-Mail an bq-federated-formats@google.com.
Delta Lake ist ein Open-Source-Tabellenformat, das Datentabellen im Petabytebereich unterstützt. Delta Lake-Tabellen können sowohl als temporäre als auch als permanente Tabellen abgefragt werden und werden als BigLake-Tabellen unterstützt.
Schemasynchronisierung
Delta Lake verwaltet ein kanonisches Schema als Teil seiner Metadaten. Sie können ein Schema nicht mit einer JSON-Metadatendatei aktualisieren. So aktualisieren Sie das Schema:
Führen Sie den Befehl
bq update
mit dem Flag--autodetect_schema
aus:bq update --autodetect_schema PROJECT_ID:DATASET.TABLE
Ersetzen Sie Folgendes:
PROJECT_ID
: Die Projekt-ID mit der Tabelle, die Sie aktualisieren möchtenDATASET
ist das Dataset mit der Tabelle, die Sie aktualisieren möchten.TABLE
: Die Tabelle, von der Sie einen Snapshot erstellen möchten
Typkonvertierung
BigQuery konvertiert Delta Lake-Datentypen in folgende BigQuery-Datentypen:
Delta Lake-Typ | BigQuery-Typ |
---|---|
boolean |
BOOL |
byte |
INT64 |
int |
INT64 |
long |
INT64 |
float |
FLOAT64 |
double |
FLOAT64 |
Decimal(P/S) |
NUMERIC oder BIG_NUMERIC , je nach Precision |
date |
DATE |
time |
TIME |
timestamp (not partition column) |
TIMESTAMP |
timestamp (partition column) |
DATETIME |
string |
STRING |
binary |
BYTES |
array<Type> |
ARRAY<Type> |
struct |
STRUCT |
map<KeyType, ValueType> |
ARRAY<Struct<key KeyType, value ValueType>> |
Beschränkungen
Die folgenden Einschränkungen gelten für Delta Lake-Tabellen:
Für Delta Lake-Tabellen gelten die Einschränkungen für externe Tabellen.
Delta Lake-Tabellen werden nur in BigQuery Omni unterstützt und haben die entsprechenden Einschränkungen.
Sie können eine Tabelle nicht mit einer neuen JSON-Metadatendatei aktualisieren. Sie müssen einen Vorgang zur automatischen Erkennung der Schematabelle verwenden. Weitere Informationen finden Sie unter Schemasynchronisierung.
BigLake-Sicherheitsfeatures schützen nur Delta Lake-Tabellen, wenn über BigQuery-Dienste zugegriffen wird.
Delta Lake-Tabelle erstellen
Im folgenden Beispiel wird eine externe Tabelle mithilfe der Anweisung CREATE EXTERNAL
TABLE
mit dem Delta Lake-Format erstellt:
CREATE [OR REPLACE] EXTERNAL TABLE table_name WITH CONNECTION connection_name OPTIONS ( format = 'DELTA_LAKE', uris = ["parent_directory"] );
Ersetzen Sie Folgendes:
table_name: der Name der Tabelle
connection_name: Der Name der Verbindung. Die Verbindung muss entweder eine Amazon S3- oder eine Blob Storage-Quelle identifizieren.
parent_directory: der URI des übergeordneten Verzeichnisses.
Cloudübergreifende Übertragung mit Delta Lake
Im folgenden Beispiel wird die Anweisung LOAD DATA
verwendet, um Daten in die entsprechende Tabelle zu laden:
LOAD DATA [INTO | OVERWRITE] table_name FROM FILES ( format = 'DELTA_LAKE', uris = ["parent_directory"] ) WITH CONNECTION connection_name;
Weitere Beispiele für cloudübergreifende Datenübertragungen finden Sie unter Daten mit cloudübergreifenden Vorgängen laden.
BigLake-Tabellen abfragen
Weitere Informationen finden Sie unter Amazon S3-Daten abfragen.
Ressourcen-Metadaten ansehen
Die Ressourcenmetadaten können Sie mitINFORMATION_SCHEMA
-Ansichten aufrufen. Wenn Sie Die Ansichten JOBS_BY_*
, JOBS_TIMELINE_BY_*
und RESERVATION*
abfragen, müssen Sie den Verarbeitungsstandort der Abfrage angeben, der zusammen mit der Region der Tabelle liegt. Informationen zu BigQuery Omni-Standorten finden Sie unter Standorte. Bei allen anderen Systemtabellen ist die Angabe des Speicherorts des Abfragejobs optional.
Informationen zu den von BigQuery Omni unterstützten Systemtabellen finden Sie unter Einschränkungen.
Zum Abfragen der Systemtabellen JOBS_*
und RESERVATION*
wählen Sie eine der folgenden Methoden aus, um den Verarbeitungsstandort anzugeben:
Console
Rufen Sie die Seite BigQuery auf.
Wenn der Tab Editor nicht angezeigt wird, klicken Sie auf
Neue Abfrage erstellen.Klicken Sie auf Mehr > Abfrageeinstellungen. Das Dialogfeld Abfrageeinstellungen wird geöffnet.
Wählen Sie im Dialogfeld Abfrageeinstellungen unter Zusätzliche Einstellungen > Speicherort der Daten BigQuery“ aus. Region, die sich mit der BigQuery Omni-Region befindet. Wenn Ihre BigQuery Omni-Region beispielsweise
aws-us-east-1
ist, geben Sieus-east4
an.Wählen Sie die übrigen Felder aus und klicken Sie auf Speichern.
bq
Verwenden Sie das Flag --location
, um den Verarbeitungsstandort des Jobs auf die BigQuery-Region festzulegen, die sich mit der BigQuery Omni-Region befindet.
Wenn Ihre BigQuery Omni-Region beispielsweise aws-us-east-1
ist, geben Sie us-east4
an.
Beispiel
bq query --use_legacy_sql=false --location=us-east4 \
"SELECT * FROM region-aws-us-east-1.INFORMATION_SCHEMA.JOBS limit 10;"
bq query --use_legacy_sql=false --location=asia-northeast3 \
"SELECT * FROM region-aws-ap-northeast-2.INFORMATION_SCHEMA.JOBS limit 10;"
API
Wenn Sie Jobs programmatisch ausführen, legen Sie das Standortargument auf die BigQuery-Region fest, die sich mit der BigQuery Omni-Region befindet.
Wenn Ihre BigQuery Omni-Region beispielsweise aws-us-east-1
ist, geben Sie us-east4
an.
Im folgenden Beispiel werden die Metadaten-Aktualisierungsjobs aufgelistet:
SELECT * FROM `region-aws-us-east-1.INFORMATION_SCHEMA.JOBS_BY_PROJECT` WHERE job_id LIKE '%metadata_cache_refresh%' AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 6 HOUR) ORDER BY start_time desc LIMIT 10;
VPC Service Controls
Sie können VPC Service Controls-Perimeter verwenden, um den Zugriff von BigQuery Omni auf einen externen Clouddienst als zusätzliche Sicherheitsebene einzuschränken. Beispielsweise können VPC Service Controls-Perimeter die Exporte aus Ihren BigQuery Omni-Tabellen auf einen bestimmten Amazon S3-Bucket oder Blob Storage-Container beschränken.
Weitere Informationen zu VPC Service Controls finden Sie im Überblick über VPC Service Controls.
Erforderliche Berechtigung
Prüfen Sie, ob Sie die erforderlichen Berechtigungen zum Konfigurieren von Dienstperimetern haben. Eine Liste der IAM-Rollen, die zum Konfigurieren von VPC Service Controls erforderlich sind, finden Sie unter Zugriffssteuerung mit IAM in der Dokumentation zu VPC Service Controls.
VPC Service Controls mithilfe der Google Cloud Console einrichten
Klicken Sie im Navigationsmenü der Google Cloud Console auf Sicherheit und dann auf VPC Service Controls.
Zum Einrichten von VPC Service Controls für BigQuery Omni folgen Sie den Schritten in der Anleitung Dienstperimeter erstellen und führen Sie im Bereich Regeln für ausgehenden Traffic die folgenden Schritte aus:
Klicken Sie im Bereich Regeln für ausgehenden Traffic auf Regel hinzufügen.
Wählen Sie im Abschnitt FROM-Attribute des API-Clients eine Option aus der Liste Identität aus.
Wählen Sie TO-Attribute von externen Ressourcen aus.
Klicken Sie auf Externe Ressourcen hinzufügen, um eine externe Ressource hinzuzufügen.
Geben Sie im Dialogfeld Externe Ressource hinzufügen unter Externer Ressourcenname einen gültigen Ressourcennamen ein. Beispiele:
Für Amazon Simple Storage Service (Amazon S3):
s3://BUCKET_NAME
Ersetzen Sie BUCKET_NAME durch den Namen Ihres Amazon S3-Buckets.
Für Azure Blob Storage:
azure://myaccount.blob.core.windows.net/CONTAINER_NAME
Ersetzen Sie CONTAINER NAME durch den Namen Ihres Blob Storage-Containers.
Eine Liste der Regelattribute für ausgehenden Traffic finden Sie unter Referenz zu Regeln für ausgehenden Traffic.
Wählen Sie die Methoden aus, die Sie für Ihre externen Ressourcen zulassen möchten:
- Wenn Sie alle Methoden zulassen möchten, wählen Sie in der Liste Methoden die Option Alle Methoden.
- Wenn Sie bestimmte Methoden zulassen möchten, wählen Sie Ausgewählte Methode aus, klicken Sie auf Methoden auswählen und wählen Sie dann die Methoden aus, die Sie für Ihre externen Ressourcen zulassen möchten.
Klicken Sie auf Perimeter erstellen.
VPC Service Controls mithilfe der gcloud CLI einrichten
So richten Sie VPC Service Controls mit der gcloud CLI ein:
- Legen Sie die Standardzugriffsrichtlinie fest.
- Erstellen Sie die Eingabedatei für die Richtlinie für ausgehenden Traffic.
- Fügen Sie die Richtlinie für ausgehenden Traffic hinzu.
Standardzugriffsrichtlinie festlegen
Eine Zugriffsrichtlinie ist ein organisationsweiter Container für Zugriffsebenen und Dienstperimeter. Informationen zum Festlegen einer Standardzugriffsrichtlinie oder zum Abrufen eines Zugriffsrichtliniennamens finden Sie unter Zugriffsrichtlinie verwalten.
Eingabedatei für die Richtlinie für ausgehenden Traffic erstellen
Ein Regelblock für ausgehenden Traffic definiert den zulässigen Zugriff innerhalb eines Perimeters auf Ressourcen außerhalb dieses Perimeters. Bei externen Ressourcen definiert das Attribut externalResources
die externen Ressourcenpfade, die den Zugriff innerhalb Ihres VPC Service Controls-Perimeters zulassen.
Ausgangsregeln können mithilfe einer JSON-Datei oder einer YAML-Datei konfiguriert werden. Im folgenden Beispiel wird das .yaml
-Format verwendet:
- egressTo: operations: - serviceName: bigquery.googleapis.com methodSelectors: - method: "*" *OR* - permission: "externalResource.read" externalResources: - EXTERNAL_RESOURCE_PATH egressFrom: identityType: IDENTITY_TYPE *OR* identities: - serviceAccount:SERVICE_ACCOUNT
egressTo
: Listet zulässige Dienstvorgänge in Google Cloud-Ressourcen in angegebenen Projekten außerhalb des Perimeters auf.operations
: Listet die zugänglichen Dienste und Aktionen/Methoden auf, auf die ein Client zugreifen darf, der diefrom
-Block-Bedingungen erfüllt.serviceName
: Legen Siebigquery.googleapis.com
für BigQuery Omni fest.methodSelectors
: Methoden auflisten, auf die ein Client zugreifen kann, der diefrom
-Bedingungen erfüllt. Die eingeschränkten Methoden und Berechtigungen für Dienste finden Sie unter Unterstützte Einschränkungen für Dienstmethoden.method
ist eine gültige Dienstmethode oder\"*\"
, um alleserviceName
-Methoden zuzulassen.permission
: eine gültige Dienstberechtigung, z. B.\"*\"
,externalResource.read
oderexternalResource.write
. Der Zugriff auf Ressourcen außerhalb des Perimeters wird für Vorgänge zugelassen, für die diese Berechtigung erforderlich ist.externalResources
: Listet externe Ressourcen auf, auf die Clients innerhalb eines Perimeters zugreifen können. Ersetzen Sie EXTERNAL_RESOURCE_PATH entweder durch einen gültigen Amazon S3-Bucket wies3://bucket_name
oder durch einen Blob Storage-Containerpfad wieazure://myaccount.blob.core.windows.net/container_name
.egressFrom
: Listet zulässige Dienstvorgänge für Google Cloud-Ressourcen in angegebenen Projekten innerhalb des Perimeters auf.identityType
oderidentities
: Definiert die Identitätstypen, die auf die angegebenen Ressourcen außerhalb des Perimeters zugreifen können. Ersetzen Sie IDENTITY_TYPE durch einen der folgenden gültigen Werte:ANY_IDENTITY
zum Zulassen aller Identitäten.ANY_USER_ACCOUNT
zum Zulassen aller Nutzer.ANY_SERVICE_ACCOUNT
zum Zulassen aller Dienstkonten.
identities
: Listet Dienstkonten auf, die auf die angegebenen Ressourcen außerhalb des Perimeters zugreifen können.serviceAccount
(optional): Ersetzen Sie SERVICE_ACCOUNT durch das Dienstkonto, das auf die angegebenen Ressourcen außerhalb des Perimeters zugreifen kann.
Beispiele
Das folgende Beispiel zeigt eine Richtlinie, die ausgehende Vorgänge innerhalb des Perimeters zum S3-Standort s3://mybucket
in AWS zulässt.
- egressTo: operations: - serviceName: bigquery.googleapis.com methodSelectors: - method: "*" externalResources: - s3://mybucket - s3://mybucket2 egressFrom: identityType: ANY_IDENTITY
Im folgenden Beispiel werden ausgehende Vorgänge an einen Blob-Storage-Container zugelassen:
- egressTo: operations: - serviceName: bigquery.googleapis.com methodSelectors: - method: "*" externalResources: - azure://myaccount.blob.core.windows.net/mycontainer egressFrom: identityType: ANY_IDENTITY
Weitere Informationen zu Richtlinien für ausgehenden Traffic finden Sie in der Referenz zu Regeln für ausgehenden Traffic.
Richtlinie für ausgehenden Traffic hinzufügen
Verwenden Sie den Befehl gcloud access-context-manager perimeters create
, um die Richtlinie für ausgehenden Traffic beim Erstellen eines neuen Dienstperimeters hinzuzufügen.
Mit dem folgenden Befehl wird beispielsweise ein neuer Perimeter namens omniPerimeter
erstellt, der das Projekt mit der Projektnummer 12345
enthält, die BigQuery API beschränkt und eine Richtlinie für ausgehenden Traffic hinzugefügt, die in der Datei egress.yaml
definiert ist:
gcloud access-context-manager perimeters create omniPerimeter \ --title="Omni Perimeter" \ --resources=projects/12345 \ --restricted-services=bigquery.googleapis.com \ --egress-policies=egress.yaml
Verwenden Sie den Befehl gcloud access-context-manager perimeters update
, um die Richtlinie für ausgehenden Traffic zu einem vorhandenen Dienstperimeter hinzuzufügen.
Mit dem folgenden Befehl wird beispielsweise eine in der Datei egress.yaml
definierte Richtlinie für ausgehenden Traffic zu einem vorhandenen Dienstperimeter mit dem Namen omniPerimeter
hinzugefügt:
gcloud access-context-manager perimeters update omniPerimeter --set-egress-policies=egress.yaml
Perimeter prüfen
Verwenden Sie den Befehl gcloud access-context-manager perimeters describe
, um den Perimeter zu prüfen:
gcloud access-context-manager perimeters describe PERIMETER_NAME
Ersetzen Sie PERIMETER_NAME durch den Namen des Perimeters.
Der folgende Befehl beschreibt beispielsweise den Perimeter omniPerimeter
:
gcloud access-context-manager perimeters describe omniPerimeter
Weitere Informationen finden Sie unter Dienstperimeter verwalten.
Beschränkungen
Eine vollständige Liste der Beschränkungen, die für BigLake-Tabellen basierend auf Amazon S3 und Blob Storage gelten, finden Sie unter Beschränkungen.
Nächste Schritte
- Weitere Informationen zu BigQuery Omni
- Verwenden Sie das Lab BigQuery Omni mit AWS-Lab.
- Informationen zu BigLake-Tabellen.
- Abfrageergebnisse nach Amazon S3 exportieren
- Materialisierte Ansichten über Amazon Simple Storage Service (Amazon S3)-Metadaten-Cache-fähige Tabellen erstellen.
- Amazon S3-Daten in einer materialisierten Ansicht lokal für Joins verfügbar machen, indem Sie ein Replikat der materialisierten Ansicht erstellen