BigLake-Tabellen in Blob Storage erstellen
In diesem Dokument wird beschrieben, wie Sie eine BigLake-Tabelle in Azure Blob Storage erstellen. Mit einer BigLake-Tabelle können Sie die Zugriffsdelegation nutzen, um Daten in Blob Storage abzufragen. Durch die Zugriffsdelegation wird der Zugriff auf die BigLake-Tabelle vom Zugriff auf den zugrunde liegenden Datenspeicher entkoppelt.
Informationen zum Datenfluss zwischen BigQuery und Blob Storage finden Sie unter Datenfluss beim Abfragen von Daten.
Hinweis
Sorgen Sie dafür, dass Sie eine Verbindung zum Zugriff auf Daten in Ihrem Blob Storage 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 auf Projekte, Ordner und Organisationen 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 unter 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 Azure 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 azure-eastus2
erstellt:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
CREATE SCHEMA mydataset OPTIONS ( location = 'azure-eastus2');
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.
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 Azure Blob Storage aus.
Geben Sie unter Azure Blob Storage-Pfad auswählen einen Blob Storage-Pfad im folgenden Format ein:
azure://AZURE_STORAGE_ACCOUNT_NAME.blob.core.windows.net/CONTAINER_NAME/FILE_PATH
Ersetzen Sie Folgendes:
AZURE_STORAGE_ACCOUNT_NAME
ist der Name des Blob Storage-Kontos. Die Region des Kontos sollte mit der Region des Datasets übereinstimmen.CONTAINER_NAME
ist der Name des Blob Storage-ContainersFILE_PATH
ist der Datenpfad, der auf die Blob Storage-Daten verweist Bei einer einzelnen CSV-Datei kannFILE_PATH
beispielsweisemyfile.csv
sein.
Wählen Sie für Dateiformat das Datenformat in Azure aus. Unterstützte Formate sind: AVRO, CSV, DELTA_LAKE, ICEBERG, JSONL, ORC, and PARQUET.
Führen Sie im Abschnitt Ziel folgende Schritte aus:
- 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 Blob Storage 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 `AZURE_LOCATION.CONNECTION_NAME` OPTIONS ( format = 'DATA_FORMAT', uris = ['azure://AZURE_STORAGE_ACCOUNT_NAME.blob.core.windows.net/CONTAINER_NAME/FILE_PATH']);
Ersetzen Sie Folgendes:
DATASET_NAME
: Name des von Ihnen erstellten DatasetsTABLE_NAME
: Name, den Sie dieser Tabelle geben möchtenAZURE_LOCATION
: ein Azure-Standort in Google Cloud, z. B.azure-eastus2
CONNECTION_NAME
: der Name der von Ihnen erstellten VerbindungDATA_FORMAT
: Alle unterstützten föderierten BigQuery-Formate, z. B.AVRO
,CSV
, oderDELTA_LAKE
oderICEBERG
(Vorschau)AZURE_STORAGE_ACCOUNT_NAME
: der Name des Blob Storage-KontosCONTAINER_NAME
: der Name des Azure Blob Storage-ContainersFILE_PATH
: der Datenpfad, der auf die Blob Storage-Daten verweist
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
Beispiel:
CREATE EXTERNAL TABLE absdataset.abstable WITH CONNECTION `azure-eastus2.abs-read-conn` OPTIONS ( format = 'CSV', uris = ['azure://account_name.blob.core.windows.net/container/path/file.csv']);
bq
Erstellen Sie eine Tabellendefinitionsdatei:
bq mkdef \ --source_format=DATA_FORMAT \ --connection_id=AZURE_LOCATION.CONNECTION_NAME \ "azure://AZURE_STORAGE_ACCOUNT_NAME.blob.core.windows.net/CONTAINER_NAME/FILE_PATH" > table_def
Ersetzen Sie Folgendes:
DATA_FORMAT
: alle unterstützten föderierten BigQuery-Formate, z. B.AVRO
,CSV
,ICEBERG
oderPARQUET
AZURE_LOCATION
: ein Azure-Standort in Google Cloud, z. B.azure-eastus2
CONNECTION_NAME
ist der Name der von Ihnen erstellten VerbindungAZURE_STORAGE_ACCOUNT_NAME
: der Name des Blob Storage-KontosCONTAINER_NAME
: der Name des Azure Blob Storage-ContainersFILE_PATH
: der Datenpfad, der auf die Blob Storage-Daten verweist
Erstellen Sie als Nächstes die BigLake-Tabelle:
bq mk --external_table_definition=table_def DATASET_NAME.TABLE_NAME
Ersetzen Sie Folgendes:
DATASET_NAME
: Name des von Ihnen erstellten DatasetsTABLE_NAME
: Name, den Sie dieser Tabelle geben möchten
Beispiel: Mit den folgenden Befehlen wird beispielsweise die neue BigLake-Tabelle my_dataset.my_table
erstellt, die Ihre Blob Storage-Daten abfragen kann, die im Pfad azure://account_name.blob.core.windows.net/container/path
gespeichert sind und am Speicherort azure-eastus2
eine Leseverbindung haben:
bq mkdef \ --source_format=AVRO \ --connection_id=azure-eastus2.read-conn \ "azure://account_name.blob.core.windows.net/container/path" > table_def bq mk \ --external_table_definition=table_def my_dataset.my_table
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 Blob Storage verwendet werden soll.
BigLake-Tabellen für partitionierte Daten erstellen
Sie können eine BigLake-Tabelle für partitionierte Hive-Daten in Blob 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, 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 für Tabelle erstellen aus eine der folgenden Optionen aus:
- Amazon S3
- Azure Blob Storage
Geben Sie den Pfad zum Ordner mit Platzhaltern an. Beispiel:
- Für Amazon S3:
s3://mybucket/*
- Für Blob-Speicher:
azure://mystorageaccount.blob.core.windows.net/mycontainer/*
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.
- Für Amazon S3:
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 Schema für benutzerdefinierte Partitionierungsschlüssel.
- 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" );
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/
azure://mystorageaccount.blob.core.windows.net/mycontainer/
FILE_PATH
: Pfad zur Datenquelle für die externe Tabelle, die Sie erstellen möchten, z. B.:s3://mybucket/*.parquet
azure://mystorageaccount.blob.core.windows.net/mycontainer/*.parquet
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 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/*'] );
Im folgenden Beispiel wird eine BigLake-Tabelle über partitionierte Daten in Blob Storage erstellt. Das Schema ist angegeben.
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 = "azure://mystorageaccount.blob.core.windows.net/mycontainer/products", uris = ['azure://mystorageaccount.blob.core.windows.net/mycontainer/*'] );
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 \ 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
: 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
.URIS
: der Pfad zum Amazon S3- oder Blob 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 \ DATASET_NAME.TABLE_NAME \ SCHEMA
Ersetzen Sie dabei Folgendes:
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 --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 \
s3://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
für Blob Storage-Daten verwendet:
bq mkdef --source_format=CSV \
--connection_id=us.my-connection \
--hive_partitioning_mode=CUSTOM \
--hive_partitioning_source_uri_prefix=azure://mystorageaccount.blob.core.windows.net/mycontainer/{dt:DATE}/{val:STRING} \
azure://mystorageaccount.blob.core.windows.net/mycontainer/* > 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: 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
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 als Teil seiner Metadaten ein kanonisches Schema. 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 die folgenden 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
Für Delta Lake-Tabellen gelten die folgenden Einschränkungen:
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 zum Aktualisieren von Schematabellen mit automatischer Erkennung 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 Blob Storage-Daten abfragen.
Ressourcenmetadaten mit INFORMATION_SCHEMA
ansehen
Die Ressourcenmetadaten können Sie über INFORMATION_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-azure-eastus2.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.
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. Beispiel:
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.
BigQuery Omni VPC-Zugriff auf Blob Storage erlauben
Wenn Sie Feedback oder Unterstützung für dieses Feature benötigen, senden Sie eine E-Mail an bq-omni-customer-support@google.com.
Als BigQuery-Administrator können Sie eine Netzwerkregel erstellen, um BigQuery Omni Zugriff auf Ihre Blob Storage-Ressourcen zu gewähren. So wird sichergestellt, dass nur autorisierte BigQuery Omni-VPCs mit Ihrem Blob Storage interagieren können, was die Sicherheit Ihrer Daten erhöht.
Netzwerkregel für BigQuery Omni-VPC anwenden
Verwenden Sie Azure PowerShell oder Terraform, um eine Netzwerkregel anzuwenden:
Azure PowerShell
Führen Sie den folgenden Befehl aus, um Ihrem Speicherkonto eine Netzwerkregel hinzuzufügen, in der die abgerufenen BigQuery Omni-Subnetz-IDs als VirtualNetworkResourceId
angegeben werden.
Add-AzStorageAccountNetworkRule` -ResourceGroupName "RESOURCE_GROUP_NAME"` -Name "STORAGE_ACCOUNT_NAME"` -VirtualNetworkResourceId "SUBNET_ID1","SUBNET_ID2"
Ersetzen Sie Folgendes:
RESOURCE_GROUP_NAME
: der Name der Ressourcengruppe.STORAGE_ACCOUNT_NAME
: der Name des SpeicherkontosSUBNET_ID1
,SUBNET_ID1
: die Subnetz-IDs. Diese Informationen finden Sie in der Tabelle auf dieser Seite.
Terraform
Fügen Sie Ihrer Terraform-Konfigurationsdatei Folgendes hinzu:
resource "azurerm_storage_account_network_rules" "example" { storage_account_name = "STORAGE_ACCOUNT_NAME" resource_group_name = "RESOURCE_GROUP_NAME" default_action = "Allow" bypass = ["Logging", "Metrics", "AzureServices"] virtual_network_subnet_ids = ["SUBNET_ID1","SUBNET_ID2"] }
Ersetzen Sie Folgendes:
STORAGE_ACCOUNT_NAME
: der Name des SpeicherkontosRESOURCE_GROUP_NAME
: der Name der Ressourcengruppe.SUBNET_ID1
,SUBNET_ID1
: die Subnetz-IDs. Diese Informationen finden Sie in der Tabelle auf dieser Seite.
VPC-Ressourcen-IDs von BigQuery Omni
Region | Subnetz-IDs |
---|---|
azure-eastus2 |
/subscriptions/95f30708-58d1-48ba-beac-d71870c3b2f5/resourceGroups/bqe-prod-eastus2-resource-group/providers/Microsoft.Network/virtualNetworks/bqe-prod-eastus2-network/subnets/azure-prod-eastus21-yurduaaaaa-private /subscriptions/95f30708-58d1-48ba-beac-d71870c3b2f5/resourceGroups/bqe-prod-eastus2-resource-group/providers/Microsoft.Network/virtualNetworks/bqe-prod-eastus2-network/subnets/azure-prod-eastus22-yurduaaaab-private |
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
- Informationen zu BigLake-Tabellen.
- Informationen zu Abfrageergebnisse nach Blob Storage exportieren