BigLake-Tabellen in Cloud Storage erstellen
In diesem Dokument wird beschrieben, wie Sie eine Cloud Storage-BigLake-Tabelle erstellen. Mit einer BigLake-Tabelle können Sie eine Zugriffsdelegation verwenden, um strukturierte Daten in Cloud Storage abzufragen. Durch die Zugriffsdelegation wird der Zugriff auf die BigLake-Tabelle vom Zugriff auf den zugrunde liegenden Datenspeicher entkoppelt.
Vorbereitung
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery Connection API.
Wenn Sie BigLake-Tabellen aus Open-Source-Engines wie Apache Spark lesen möchten, müssen Sie die BigQuery Storage Read API aktivieren.
-
In the Google Cloud console, activate Cloud Shell.
Sorgen Sie dafür, dass Sie ein BigQuery-Dataset haben.
Prüfen Sie, ob Ihre Version des Google Cloud SDK 366.0.0 oder höher ist:
gcloud version
Aktualisieren Sie das Google Cloud SDK bei Bedarf.
- Optional: Für Terraform ist
terraform-provider-google
Version 4.25.0 oder höher erforderlich.terraform-provider-google
Releases sind auf GitHub aufgeführt. Sie können die neueste Version von Terraform von HashiCorp Terraform-Downloads herunterladen.
- Optional: Für Terraform ist
Erstellen Sie eine Cloud-Ressourcenverbindung anhand der externen Datenquelle und gewähren Sie dieser Verbindung Zugriff auf Cloud Storage. Wenn Sie nicht die erforderlichen Berechtigungen zum Erstellen einer Verbindung haben, bitten Sie Ihren BigQuery-Administrator, eine Verbindung zu erstellen und die Verbindung mit Ihnen zu teilen.
Erforderliche Rollen
Zum Erstellen einer BigLake-Tabelle benötigen Sie die folgenden IAM-Berechtigungen (BigQuery Identity and Access Management):
bigquery.tables.create
bigquery.connections.delegate
Die vordefinierte IAM-Rolle „Identity and Access Management“ (BigQuery) (roles/bigquery.admin
) enthält diese Berechtigungen.
Wenn Sie in dieser Rolle kein Hauptkonto haben, bitten Sie Ihren Administrator, Ihnen Zugriff zu gewähren oder die BigLake-Tabelle für Sie zu erstellen.
Weitere Informationen zu Rollen und Berechtigungen für das Identity and Access Management in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.
Standortberücksichtigung
Wenn Sie Datendateien in Cloud Storage speichern, können Sie die Leistung verbessern, indem Sie Buckets für eine einzelne Region oder eine Dual-Region von Cloud Storage anstelle von multiregionalen Buckets verwenden.
BigLake-Tabellen für nicht partitionierte Daten erstellen
Wenn Sie mit dem Erstellen von Tabellen in BigQuery vertraut sind, gehen Sie beim Erstellen einer BigLake-Tabelle ähnlich vor. Ihre Tabelle kann jedes Dateiformat verwenden, das von BigLake unterstützt wird. Weitere Informationen finden Sie unter Einschränkungen.
Zum Erstellen einer BigLake-Tabelle benötigen Sie ein Dataset und eine Cloud-Ressourcenverbindung, die auf Cloud Storage zugreifen kann.
Wählen Sie eine der folgenden Optionen, um eine BigLake-Tabelle zu erstellen:
Console
Rufen Sie die Seite BigQuery auf.
Maximieren Sie im Bereich Explorer Ihr Projekt und wählen Sie ein Dataset aus.
Maximieren Sie die Option
Aktionen und klicken Sie auf Tabelle erstellen.Geben Sie im Bereich Quelle die folgenden Details an:
Wählen Sie unter Tabelle erstellen aus die Option Google Cloud Storage aus.
Wählen Sie unter Datei aus GCS-Bucket auswählen oder URI-Muster auswählen einen Bucket und eine Datei aus, die verwendet werden sollen, oder geben Sie den Pfad im Format
gs://bucket_name/[folder_name/]file_name
ein.In der Google Cloud Console können Sie nicht mehrere URIs angeben. Sie können jedoch mehrere Dateien auswählen, indem Sie ein Platzhalterzeichen (
*
) angeben. Beispiel:gs://mybucket/file_name*
. Weitere Informationen finden Sie unter Unterstützung von Platzhaltern für Cloud Storage-URIs.Der Cloud Storage-Bucket muss sich am selben Standort wie das Dataset befinden, das die von Ihnen erstellte Tabelle enthält.
Wählen Sie bei Dateiformat das Format aus, das zu Ihrer Datei passt.
Geben Sie im Bereich Ziel die folgenden Details an:
Wählen Sie unter Projekt das Projekt aus, in dem die Tabelle erstellt werden soll.
Wählen Sie unter Dataset das Dataset aus, in dem die Tabelle erstellt werden soll.
Geben Sie unter Tabelle den Namen der Tabelle ein, die Sie in BigQuery erstellen.
Wählen Sie als Tabellentyp die Option Externe Tabelle aus.
Wählen Sie BigLake-Tabelle mit einer Cloud-Ressourcenverbindung erstellen aus.
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 Zeilen ignorieren möchten, die nicht mit dem Schema übereinstimmen, maximieren Sie den Abschnitt Erweiterte Optionen und wählen Sie Unbekannte Werte aus.
Klicken Sie anschließend auf Tabelle erstellen.
Nachdem die permanente Tabelle erstellt wurde, können Sie die Tabelle wie eine native BigQuery-Tabelle abfragen. Nach Abschluss der Abfrage können Sie die Ergebnisse als CSV- oder JSON-Dateien exportieren oder als Tabelle bzw. in Google Sheets speichern.
SQL
Verwenden Sie die DDL-Anweisung CREATE EXTERNAL TABLE
.
Sie können das Schema explizit angeben oder die automatische Schemaerkennung verwenden, um das Schema aus den externen Daten abzuleiten.
Ö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 CONNECTION `PROJECT_ID.REGION.CONNECTION_ID` OPTIONS ( format ="TABLE_FORMAT", uris = ['BUCKET_PATH'[,...]], 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
REGION
: Die Region, die die Verbindung enthält, z. B.us
.CONNECTION_ID
: die Verbindungs-ID, z. B.myconnection
Wenn Sie sich Verbindungsdetails in der Google Cloud Console ansehen, ist die Verbindungs-ID der Wert im letzten Abschnitt der voll qualifizierten Verbindungs-ID, der unter Verbindungs-ID angezeigt wird, z. B.
projects/myproject/locations/connection_location/connections/myconnection
.TABLE_FORMAT
: das Format der Tabelle, die Sie erstellen möchten, z. B.PARQUET
Weitere Informationen zu unterstützten Formaten finden Sie unter Einschränkungen.
BUCKET_PATH
: der Pfad zum Cloud Storage-Bucket, der die Daten für die externe Tabelle im Format['gs://bucket_name/[folder_name/]file_name']
enthält.Sie können mehrere Dateien aus dem Bucket auswählen, indem Sie im Pfad ein Sternchenzeichen (
*
) angeben. Beispiel:['gs://mybucket/file_name*']
. Weitere Informationen finden Sie unter Unterstützung von Platzhaltern für Cloud Storage-URIs.Sie können mehrere Buckets für die Option
uris
angeben, indem Sie mehrere Pfade angeben.Die folgenden Beispiele zeigen gültige
uris
-Werte:['gs://bucket/path1/myfile.csv']
['gs://bucket/path1/*.csv']
['gs://bucket/path1/*', 'gs://bucket/path2/file00*']
Wenn Sie
uris
-Werte angeben, die auf mehrere Dateien abzielen, müssen alle diese Dateien ein kompatibles Schema verwenden.Weitere Informationen zur Verwendung von Cloud Storage-URIs in BigQuery finden Sie unter Cloud Storage-Ressourcenpfad.
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. Sind die im Cache gespeicherten Metadaten älter, werden für den Vorgang stattdessen Metadaten aus Cloud Storage abgerufen.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.
bq
Option 1: Tabellendefinitionsdatei
Verwenden Sie den Befehl bq mkdef
, um eine Tabellendefinitionsdatei zu erstellen, und übergeben Sie dann den Dateipfad an den bq mk
-Befehl so:
bq mkdef \ --connection_id=CONNECTION_ID \ --source_format=SOURCE_FORMAT \ BUCKET_PATH > DEFINITION_FILE bq mk --table \ --external_table_definition=DEFINITION_FILE \ --max_staleness=STALENESS_INTERVAL \ PROJECT_ID:DATASET.EXTERNAL_TABLE_NAME \ SCHEMA
Ersetzen Sie dabei Folgendes:
CONNECTION_ID
: die Verbindungs-ID, z. B.myconnection
Wenn Sie sich Verbindungsdetails in der Google Cloud Console ansehen, ist die Verbindungs-ID der Wert im letzten Abschnitt der voll qualifizierten Verbindungs-ID, der unter Verbindungs-ID angezeigt wird, z. B.
projects/myproject/locations/connection_location/connections/myconnection
.SOURCE_FORMAT
: das Format der externen Datenquelle. Beispiel:PARQUET
.BUCKET_PATH
: der Pfad zum Cloud Storage-Bucket, der die Daten für die Tabelle im Formatgs://bucket_name/[folder_name/]file_pattern
enthält.Sie können mehrere Dateien aus dem Bucket auswählen, indem Sie im
file_pattern
ein Sternchenzeichen (*
) angeben. Beispiel:gs://mybucket/file00*.parquet
. Weitere Informationen finden Sie unter Unterstützung von Platzhaltern für Cloud Storage-URIs.Sie können mehrere Buckets für die Option
uris
angeben, indem Sie mehrere Pfade angeben.Die folgenden Beispiele zeigen gültige
uris
-Werte:gs://bucket/path1/myfile.csv
gs://bucket/path1/*.parquet
gs://bucket/path1/file1*
,gs://bucket1/path1/*
Wenn Sie
uris
-Werte angeben, die auf mehrere Dateien abzielen, müssen alle diese Dateien ein kompatibles Schema verwenden.Weitere Informationen zur Verwendung von Cloud Storage-URIs in BigQuery finden Sie unter Cloud Storage-Ressourcenpfad.
DEFINITION_FILE
: der Pfad zur Tabellendefinitionsdatei auf Ihrem lokalen Rechner.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 einen Intervallwert zwischen 30 Minuten und 7 Tagen unter Verwendung des in der
INTERVAL
-Datentypdokumentation beschriebenen FormatsY-M D H:M:S
. Beispiel: Geben Sie0-0 0 4:0:0
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. Sind die im Cache gespeicherten Metadaten älter, werden für den Vorgang stattdessen Metadaten aus Cloud Storage abgerufen.DATASET
: der Name des BigQuery-Datasets, in dem Sie eine Tabelle erstellen möchten, z. B.mydataset
EXTERNAL_TABLE_NAME
: der Name der Tabelle, die Sie erstellen möchten, z. B.mytable
SCHEMA
: das Schema für die BigLake-Tabelle
Beispiel:
bq mkdef --connection_id=myconnection --metadata_cache_mode=CACHE_MODE --source_format=CSV 'gs://mybucket/*.csv' > mytable_def bq mk --table --external_table_definition=mytable_def='gs://mybucket/*.csv' --max_staleness=0-0 0 4:0:0 myproject:mydataset.mybiglaketable Region:STRING,Quarter:STRING,Total_sales:INTEGER
Um die automatische Schemaerkennung zu verwenden, geben Sie im mkdef
-Befehl das --autodetect=true
-Flag an und lassen das Schema weg:
bq mkdef \ --connection_id=myconnection \ --metadata_cache_mode=CACHE_MODE \ --source_format=CSV --autodetect=true \ gs://mybucket/*.csv > mytable_def bq mk \ --table \ --external_table_definition=mytable_def=gs://mybucket/*.csv \ --max_staleness=0-0 0 4:0:0 \ myproject:mydataset.myexternaltable
Option 2: Inline-Tabellendefinition
Anstatt eine Tabellendefinitionsdatei zu erstellen, können Sie die Tabellendefinition direkt an den bq mk
-Befehl übergeben:
Verwenden Sie den Decorator @connection
, um die Verbindung anzugeben, die am Ende des Parameters --external_table_definition
verwendet werden soll.
bq mk --table \ --external_table_definition=@SOURCE_FORMAT=BUCKET_PATH@projects/PROJECT_ID/locations/REGION/connections/CONNECTION_ID \ DATASET_NAME.TABLE_NAME \ SCHEMA
Ersetzen Sie dabei Folgendes:
SOURCE_FORMAT
: das Format der externen DatenquelleBeispiel:
CSV
.BUCKET_PATH
: der Pfad zum Cloud Storage-Bucket, der die Daten für die Tabelle im Formatgs://bucket_name/[folder_name/]file_pattern
enthält.Sie können mehrere Dateien aus dem Bucket auswählen, indem Sie im
file_pattern
ein Sternchenzeichen (*
) angeben. Beispiel:gs://mybucket/file00*.parquet
. Weitere Informationen finden Sie unter Unterstützung von Platzhaltern für Cloud Storage-URIs.Sie können mehrere Buckets für die Option
uris
angeben, indem Sie mehrere Pfade angeben.Die folgenden Beispiele zeigen gültige
uris
-Werte:gs://bucket/path1/myfile.csv
gs://bucket/path1/*.parquet
gs://bucket/path1/file1*
,gs://bucket1/path1/*
Wenn Sie
uris
-Werte angeben, die auf mehrere Dateien abzielen, müssen alle diese Dateien ein kompatibles Schema verwenden.Weitere Informationen zur Verwendung von Cloud Storage-URIs in BigQuery finden Sie unter Cloud Storage-Ressourcenpfad.
PROJECT_ID
: der Name Ihres Projekts, in dem Sie die Tabelle erstellen möchten, z. B.myproject
REGION
: die Region, die die Verbindung enthält,us
CONNECTION_ID
: die Verbindungs-ID, z. B.myconnection
Wenn Sie sich Verbindungsdetails in der Google Cloud Console ansehen, ist die Verbindungs-ID der Wert im letzten Abschnitt der voll qualifizierten Verbindungs-ID, der unter Verbindungs-ID angezeigt wird, z. B.
projects/myproject/locations/connection_location/connections/myconnection
.DATASET_NAME
: der Name des Datasets, in dem Sie die BigLake-Tabelle erstellen möchtenTABLE_NAME
: der Name der BigLake-TabelleSCHEMA
: das Schema für die BigLake-Tabelle
Beispiel:
bq mk --table \ --external_table_definition=@CSV=gs://mybucket/*.parquet@projects/myproject/locations/us/connections/myconnection \ --max_staleness=0-0 0 4:0:0 \ myproject:mydataset.myexternaltable \ Region:STRING,Quarter:STRING,Total_sales:INTEGER
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 Cloud Storage verwendet werden soll.
Terraform
In diesem Beispiel wird eine BigLake-Tabelle für nicht partitionierte Daten erstellt.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud-Projekt anzuwenden.
Cloud Shell vorbereiten
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Google Cloud-Standardprojekt fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.
Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
-
Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung
.tf
haben, z. B.main.tf
. In dieser Anleitung wird die Datei alsmain.tf
bezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.
Kopieren Sie den Beispielcode in das neu erstellte
main.tf
.Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
terraform init
Fügen Sie optional die Option
-upgrade
ein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
Änderungen anwenden
-
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
-
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
- Öffnen Sie Ihr Google Cloud-Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.
BigLake unterstützt die automatische Schemaerkennung. Wenn Sie kein Schema angegeben haben und dem Dienstkonto in den vorherigen Schritten kein Zugriff gewährt wurde, schlagen diese Schritte bei der automatischen Schemaerkennung jedoch mit der Meldung „Zugriff verweigert“ fehl.
BigLake-Tabellen für partitionierte Hive-Daten erstellen
Sie können eine BigLake-Tabelle für partitionierte Hive-Daten in Cloud Storage 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 aus, um eine BigLake-Tabelle basierend auf nach Hive partitionierten Daten in Cloud Storage 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 Google Cloud Storage aus.
Geben Sie den Pfad zum Ordner mit Platzhaltern an. Beispiel:
my_bucket/my_files*
. 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:
gs://my_bucket/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.
- Wählen Sie als Tabellentyp die Option Externe Tabelle aus.
- Klicken Sie auf das Kästchen BigLake-Tabelle mit einer Cloud-Ressourcenverbindung erstellen.
- 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 Zeilen ignorieren möchten, die nicht mit dem Schema übereinstimmen, maximieren Sie den Abschnitt Erweiterte Optionen und wählen Sie Unbekannte Werte aus.
Klicken Sie anschließend 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'], max_staleness = STALENESS_INTERVAL, metadata_cache_mode = 'CACHE_MODE', format ="TABLE_FORMAT" );
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
: die Verbindungs-ID, z. B.myconnection
Wenn Sie sich Verbindungsdetails in der Google Cloud Console ansehen, ist die Verbindungs-ID der Wert im letzten Abschnitt der voll qualifizierten Verbindungs-ID, der unter Verbindungs-ID angezeigt wird, z. B.
projects/myproject/locations/connection_location/connections/myconnection
.HIVE_PARTITION_URI_PREFIX
: Hive-Partitionierungs-Präfix, z. B.gs://mybucket/
FILE_PATH
: Pfad zur Datenquelle für die externe Tabelle, die Sie erstellen möchten, z. B.gs://mybucket/*.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. Sind die im Cache gespeicherten Metadaten älter, werden für den Vorgang stattdessen Metadaten aus Cloud Storage abgerufen.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.TABLE_FORMAT
: das Format der Tabelle, die Sie erstellen möchten, z. B.PARQUET
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 erstellt, wobei:
- Das Schema wird automatisch erkannt.
- Das Veralterungsintervall für Metadaten-Caches beträgt 1 Tag.
- Der Metadaten-Cache wird automatisch aktualisiert.
CREATE EXTERNAL TABLE `my_dataset.my_table` WITH PARTITION COLUMNS ( sku STRING, ) WITH CONNECTION `us.my-connection` OPTIONS( hive_partition_uri_prefix = "gs://mybucket/products", uris = ['gs://mybucket/products/*'], max_staleness = INTERVAL 1 DAY, metadata_cache_mode = 'AUTOMATIC' );
Im folgenden Beispiel wird eine BigLake-Tabelle über partitionierte Daten erstellt, wobei:
- Das Schema ist angegeben.
- Das Intervall für die Metadatenveralterung für die Tabelle beträgt 8 Stunden.
- Der Metadaten-Cache muss manuell aktualisiert werden.
CREATE EXTERNAL TABLE `my_dataset.my_table` ( ProductId INTEGER, ProductName STRING, ProductType STRING ) WITH PARTITION COLUMNS ( sku STRING, ) WITH CONNECTION `us.my-connection` OPTIONS( hive_partition_uri_prefix = "gs://mybucket/products", uris = ['gs://mybucket/products/*'], max_staleness = INTERVAL 8 HOUR, metadata_cache_mode = 'MANUAL' );
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=GCS_URI_SHARED_PREFIX \ --require_hive_partition_filter=BOOLEAN \ --metadata_cache_mode=CACHE_MODE \ GCS_URIS > DEFINITION_FILE
Ersetzen Sie dabei Folgendes:
SOURCE_FORMAT
: das Format der externen Datenquelle Beispiel:CSV
.REGION
: Die Region, die die Verbindung enthält, z. B.us
.CONNECTION_ID
: die Verbindungs-ID, z. B.myconnection
Wenn Sie sich Verbindungsdetails in der Google Cloud Console ansehen, ist die Verbindungs-ID der Wert im letzten Abschnitt der voll qualifizierten Verbindungs-ID, der unter Verbindungs-ID angezeigt wird, z. B.
projects/myproject/locations/connection_location/connections/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.
GCS_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 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.GCS_URIS
: der Pfad zum Cloud Storage-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=GCS_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 --external_table_definition=DEFINITION_FILE \ --max_staleness=STALENESS_INTERVAL \ DATASET_NAME.TABLE_NAME \ SCHEMA
Ersetzen Sie dabei Folgendes:
DEFINITION_FILE
: der Pfad zur Tabellendefinitionsdatei.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. Wenn Sie dieses Flag angeben, müssen Sie im vorherigen Befehlbq mkdef
auch einen Wert für das Flag--metadata_cache_mode
angegeben haben. 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 einen Intervallwert zwischen 30 Minuten und 7 Tagen unter Verwendung des in der
INTERVAL
-Datentypdokumentation beschriebenen FormatsY-M D H:M:S
. Beispiel: Geben Sie0-0 0 4:0:0
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. Sind die im Cache gespeicherten Metadaten älter, werden für den Vorgang stattdessen Metadaten aus Cloud Storage abgerufen.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
verwendet. Außerdem wird der Metadaten-Cache auf ein 12-Stunden-Veralterungsintervall eingestellt und automatisch aktualisiert:
bq mkdef --source_format=CSV \
--connection_id=us.my-connection \
--hive_partitioning_mode=AUTO \
--hive_partitioning_source_uri_prefix=gs://myBucket/myTable \
--metadata_cache_mode=AUTOMATIC \
gs://myBucket/myTable/* > mytable_def
bq mk --external_table_definition=mytable_def \
--max_staleness=0-0 0 12:0:0 \
mydataset.mytable \
Region:STRING,Quarter:STRING,Total_sales:INTEGER
Im folgenden Beispiel wird der Hive-Partitionierungsmodus STRING
verwendet:
bq mkdef --source_format=CSV \
--connection_id=us.my-connection \
--hive_partitioning_mode=STRING \
--hive_partitioning_source_uri_prefix=gs://myBucket/myTable \
gs://myBucket/myTable/* > mytable_def
bq mk --external_table_definition=mytable_def \
mydataset.mytable \
Region:STRING,Quarter:STRING,Total_sales:INTEGER
Im folgenden Beispiel wird der Hive-Partitionierungsmodus CUSTOM
verwendet:
bq mkdef --source_format=CSV \
--connection_id=us.my-connection \
--hive_partitioning_mode=CUSTOM \
--hive_partitioning_source_uri_prefix=gs://myBucket/myTable/{dt:DATE}/{val:STRING} \
gs://myBucket/myTable/* > mytable_def
bq mk --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: gs://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.
Terraform
In diesem Beispiel wird eine BigLake-Tabelle für partitionierte Daten erstellt.
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud-Projekt anzuwenden.
Cloud Shell vorbereiten
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Google Cloud-Standardprojekt fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.
Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
-
Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung
.tf
haben, z. B.main.tf
. In dieser Anleitung wird die Datei alsmain.tf
bezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.
Kopieren Sie den Beispielcode in das neu erstellte
main.tf
.Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
terraform init
Fügen Sie optional die Option
-upgrade
ein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
Änderungen anwenden
-
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
-
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
- Öffnen Sie Ihr Google Cloud-Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.
Zugriffssteuerungsrichtlinien einrichten
Sie können den Zugriff auf BigLake-Tabellen auf verschiedene Arten steuern:
Eine Anleitung zum Einrichten der Sicherheit auf Spaltenebene finden Sie im Sicherheitsleitfaden auf Spaltenebene.
Eine Anleitung zum Einrichten der Datenmaskierung finden Sie im Anleitung zur Datenmaskierung.
Eine Anleitung zum Einrichten der Sicherheit auf Zeilenebene finden Sie im Sicherheitsleitfaden auf Zeilenebene.
Angenommen, Sie möchten den Zeilenzugriff für die Tabelle mytable
im Dataset mydataset
beschränken:
+---------+---------+-------+ | country | product | price | +---------+---------+-------+ | US | phone | 100 | | JP | tablet | 300 | | UK | laptop | 200 | +---------+---------+-------+
Sie können einen Filter auf Zeilenebene für Kim (kim@example.com
) erstellen, der den Zugriff auf Zeilen beschränkt, in denen country
gleich US
ist.
CREATE ROW ACCESS POLICY only_us_filter ON mydataset.mytable GRANT TO ('user:kim@example.com') FILTER USING (country = 'US');
Dann führt vCenter die folgende Abfrage aus:
SELECT * FROM projectid.mydataset.mytable;
Die Ausgabe zeigt nur die Zeilen, in denen country
gleich US
ist:
+---------+---------+-------+ | country | product | price | +---------+---------+-------+ | US | phone | 100 | +---------+---------+-------+
BigLake-Tabellen abfragen
Weitere Informationen finden Sie unter Cloud Storage-Daten in BigLake-Tabellen abfragen.
BigLake-Tabellen aktualisieren
Sie können BigLake-Tabellen bei Bedarf aktualisieren, um beispielsweise ihr Metadaten-Caching zu ändern. Tabellendetails wie das Quellformat und den Quell-URI finden Sie unter Tabelleninformationen abrufen.
Mit diesem Verfahren können Sie auch Cloud Storage-basierte externe Tabellen auf BigLake-Tabellen aktualisieren, indem Sie die externe Tabelle einer Verbindung zuordnen. Weitere Informationen finden Sie unter Externe Tabellen auf BigLake-Tabellen aktualisieren.
Wählen Sie eine der folgenden Optionen, um eine BigLake-Tabelle zu aktualisieren:
SQL
Verwenden Sie die DDL-Anweisung CREATE OR REPLACE EXTERNAL TABLE
, um eine Tabelle zu aktualisieren:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
CREATE OR REPLACE EXTERNAL TABLE `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME` WITH CONNECTION `REGION.CONNECTION_ID` OPTIONS( format ="TABLE_FORMAT", uris = ['BUCKET_PATH'], max_staleness = STALENESS_INTERVAL, metadata_cache_mode = 'CACHE_MODE' );
Ersetzen Sie Folgendes:
PROJECT_ID
: der Name des Projekts, das die Verbindung enthältDATASET
: der Name des Datasets, das die Tabelle enthältEXTERNAL_TABLE_NAME
: der Name der TabelleREGION
: die Region, die die Verbindung enthältCONNECTION_ID
: der Name der zu verwendenden VerbindungTABLE_FORMAT
: das von der Tabelle verwendete FormatDies kann beim Aktualisieren der Tabelle nicht geändert werden.
BUCKET_PATH
: der Pfad zum Cloud Storage-Bucket, der die Daten für die externe Tabelle im Format['gs://bucket_name/[folder_name/]file_name']
enthält.Sie können mehrere Dateien aus dem Bucket auswählen, indem Sie im Pfad ein Sternchenzeichen (
*
) angeben. Beispiel:['gs://mybucket/file_name*']
. Weitere Informationen finden Sie unter Unterstützung von Platzhaltern für Cloud Storage-URIs.Sie können mehrere Buckets für die Option
uris
angeben, indem Sie mehrere Pfade angeben.Die folgenden Beispiele zeigen gültige
uris
-Werte:['gs://bucket/path1/myfile.csv']
['gs://bucket/path1/*.csv']
['gs://bucket/path1/*', 'gs://bucket/path2/file00*']
Wenn Sie
uris
-Werte angeben, die auf mehrere Dateien abzielen, müssen alle diese Dateien ein kompatibles Schema verwenden.Weitere Informationen zur Verwendung von Cloud Storage-URIs in BigQuery finden Sie unter Cloud Storage-Ressourcenpfad.
STALENESS_INTERVAL
: Gibt an, ob im Cache gespeicherte Metadaten von Vorgängen für die Tabelle verwendet werden und wie aktuell die im Cache gespeicherten Metadaten sein müssen, damit der Vorgang sie verwenden kann.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. Sind die im Cache gespeicherten Metadaten älter, werden für den Vorgang stattdessen Metadaten aus Cloud Storage abgerufen.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.
bq
Verwenden Sie die Befehle bq mkdef
und bq update
, um eine Tabelle zu aktualisieren:
Generieren Sie eine externe Tabellendefinition, in der die Aspekte der zu ändernden Tabelle beschrieben werden:
bq mkdef --connection_id=PROJECT_ID.REGION.CONNECTION_ID \ --source_format=TABLE_FORMAT \ --metadata_cache_mode=CACHE_MODE \ "BUCKET_PATH" > /tmp/DEFINITION_FILE
Ersetzen Sie dabei Folgendes:
PROJECT_ID
: der Name des Projekts, das die Verbindung enthältREGION
: die Region, die die Verbindung enthältCONNECTION_ID
: Name der zu verwendenden VerbindungTABLE_FORMAT
: das von der Tabelle verwendete Format Dies kann beim Aktualisieren der Tabelle nicht geändert werden.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.BUCKET_PATH
: der Pfad zum Cloud Storage-Bucket, der die Daten für die externe Tabelle im Formatgs://bucket_name/[folder_name/]file_name
enthält.Sie können die aus dem Bucket ausgewählten Dateien einschränken, indem Sie im Pfad ein Sternchenzeichen (
*
) angeben. Beispiel:gs://mybucket/file_name*
. Weitere Informationen finden Sie unter Unterstützung von Platzhaltern für Cloud Storage-URIs.Sie können mehrere Buckets für die Option
uris
angeben, indem Sie mehrere Pfade angeben.Die folgenden Beispiele zeigen gültige
uris
-Werte:gs://bucket/path1/myfile.csv
gs://bucket/path1/*.csv
gs://bucket/path1/*,gs://bucket/path2/file00*
Wenn Sie
uris
-Werte angeben, die auf mehrere Dateien abzielen, müssen alle diese Dateien ein kompatibles Schema verwenden.Weitere Informationen zur Verwendung von Cloud Storage-URIs in BigQuery finden Sie unter Cloud Storage-Ressourcenpfad.
DEFINITION_FILE
: der Name der Tabellendefinitionsdatei, die Sie erstellen.
Aktualisieren Sie die Tabelle mit der neuen externen Tabellendefinition:
bq update --max_staleness=STALENESS_INTERVAL \ --external_table_definition=/tmp/DEFINITION_FILE \ PROJECT_ID:DATASET.EXTERNAL_TABLE_NAME
Ersetzen Sie dabei Folgendes:
STALENESS_INTERVAL
: Gibt an, ob im Cache gespeicherte Metadaten von Vorgängen für die Tabelle verwendet werden und wie aktuell die im Cache gespeicherten Metadaten sein müssen, damit der Vorgang sie verwenden kann. 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 einen Intervallwert zwischen 30 Minuten und 7 Tagen unter Verwendung des in der
INTERVAL
-Datentypdokumentation beschriebenen FormatsY-M D H:M:S
. Beispiel: Geben Sie0-0 0 4:0:0
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. Sind die im Cache gespeicherten Metadaten älter, werden für den Vorgang stattdessen Metadaten aus Cloud Storage abgerufen.DEFINITION_FILE
: der Name der Tabellendefinitionsdatei, die Sie erstellt oder aktualisiert haben.PROJECT_ID
: der Name des Projekts, das die Verbindung enthältDATASET
: der Name des Datasets, das die Tabelle enthältEXTERNAL_TABLE_NAME
: der Name der Tabelle
Beispiel
Im folgenden Beispiel wird mytable
so aktualisiert, dass im Cache gespeicherte Metadaten verwendet werden, solange es in den letzten 4,5 Stunden aktualisiert wurde und auch automatisch im Cache gespeicherte Metadaten aktualisiert werden:
bq update --project_id=myproject --max_staleness='0-0 0 4:30:0' \
--external_table_definition=enable_metadata.json mydataset.mytable
Dabei hat enable_metadata.json
den folgenden Inhalt:
{
"metadataCacheMode": "AUTOMATIC"
}
Audit-Logging
Weitere Informationen zum Logging in BigQuery finden Sie unter Einführung in BigQuery-Monitoring. Weitere Informationen zum Logging in Google Cloud finden Sie unter Cloud Logging.