ObjectRef-Spalten in Tabellenschemas angeben
In diesem Dokument wird beschrieben, wie Sie ein BigQuery-Standardtabellenschema mit Spalten definieren, in denen ObjectRef
-Werte gespeichert werden können.
ObjectRef
-Werte enthalten Metadaten und Verbindungsinformationen für Objekte in Cloud Storage. Verwenden Sie ObjectRef
-Werte, wenn Sie unstrukturierte Daten in eine Standardtabelle einbinden möchten. In einer Produkttabelle können Sie beispielsweise Produktbilder in derselben Zeile wie die restlichen Produktinformationen speichern, indem Sie eine Spalte mit ObjectRef
-Werten hinzufügen. Sie können ObjectRef
-Werte in STRUCT
-Spalten speichern, die das ObjectRef
-Format verwenden, also STRUCT<uri STRING, version STRING, authorizer STRING, details JSON>
.
Weitere Informationen zur Arbeit mit multimodalen Daten finden Sie unter Multimodale Daten analysieren.
Eine Anleitung zur Arbeit mit ObjectRef
-Daten finden Sie unter Multimodale Daten mit SQL analysieren.
Informationen zur Arbeit mit multimodalen Daten in Python finden Sie unter Multimodale Daten in Python mit BigQuery DataFrames analysieren.
Vorbereitung
Wenn Sie ObjectRef
-Werte in einer Standardtabelle einfügen und aktualisieren möchten, muss die Tabelle eine STRING
-Spalte mit URI-Informationen für die zugehörigen Cloud Storage-Objekte enthalten.
Sie benötigen einen Cloud Storage-Bucket, der dieselben Objekte enthält, die in den URI-Daten der Zielstandardtabelle angegeben sind.
Wenn Sie ObjectRef
-Werte mithilfe einer Objekttabelle in einer Standardtabelle pflegen möchten, benötigen Sie auch eine Objekttabelle, die die Objekte in diesem Bucket darstellt.
ObjectRef
-Werte beibehalten
Mit einer Objekttabelle können Sie ObjectRef
-Werte in einer Standardtabelle einfügen und aktualisieren. Wenn Sie auf der Zulassungsliste für die Vorabversion stehen, enthalten alle von Ihnen erstellten Objekttabellen eine ref
-Spalte mit einem ObjectRef
-Wert für das jeweilige Objekt. Sie können den Objekt-URI verwenden, um die Standardtabelle mit der Objekttabelle zu verknüpfen, um ObjectRef
-Werte einzufügen und zu aktualisieren. Wir empfehlen diesen Ansatz aus Gründen der Skalierbarkeit, da dadurch der Abruf von Objektmetadaten aus Cloud Storage vermieden wird.
Wenn Sie keine Objekttabelle erstellen möchten, können Sie die Funktionen OBJ.FETCH_METADATA
und OBJ.MAKE_REF
verwenden, um ObjectRef
-Werte zu füllen und zu aktualisieren, indem Sie Objektmetadaten direkt aus Cloud Storage abrufen. Dieser Ansatz ist möglicherweise weniger skalierbar, da Objektmetadaten aus Cloud Storage abgerufen werden müssen.
ObjectRef
-Spalte erstellen
Wählen Sie eine der folgenden Optionen aus, um eine ObjectRef
-Spalte in einer Standardtabelle zu erstellen und zu befüllen:
Objekttabelle
So erstellen und füllen Sie eine ObjectRef
-Spalte anhand der Daten aus einer ref
-Spalte einer Objekttabelle:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
CREATE OR REPLACE TABLE PROJECT_ID.DATASET_ID.TABLE_NAME AS SELECT TABLE_NAME.*, OBJECT_TABLE.ref AS objectrefcolumn FROM DATASET_ID.TABLE_NAME INNER JOIN DATASET_ID.OBJECT_TABLE ON OBJECT_TABLE.uri = TABLE_NAME.uri;
Dabei gilt:
PROJECT_ID
: Ihre Projekt-ID. Sie können dieses Argument überspringen, wenn Sie die Tabelle in Ihrem aktuellen Projekt erstellen.DATASET_ID
: die ID des zu erstellenden Datasets.TABLE_NAME
: der Name der Standardtabelle, die Sie neu erstellen.OBJECT_TABLE
: der Name der Objekttabelle, die die Objektdaten enthält, die Sie in die Standardtabelle einbinden möchten.
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
SQL-Funktionen
So erstellen und füllen Sie eine ObjectRef
-Spalte basierend auf der Ausgabe der Funktionen OBJ.FETCH_METADATA
und OBJ.MAKE_REF
:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
CREATE OR REPLACE TABLE PROJECT_ID.DATASET_ID.TABLE_NAME AS SELECT TABLE_NAME.*, OBJ.FETCH_METADATA(OBJ.MAKE_REF(uri, 'CONNECTION_ID')) AS objectrefcolumn FROM DATASET_ID.TABLE_NAME;
Dabei gilt:
PROJECT_ID
: Ihre Projekt-ID. Sie können dieses Argument überspringen, wenn Sie die Tabelle in Ihrem aktuellen Projekt erstellen.DATASET_ID
: die ID des zu erstellenden Datasets.TABLE_NAME
: der Name der Standardtabelle, die Sie neu erstellen.CONNECTION_ID
: EinSTRING
-Wert, der eine Cloud-Ressourcenverbindung im Formatlocation.connection_id
enthält, über die der Dienst auf die Objekte in Cloud Storage zugreifen kann. Beispiel:us-west1.myconnection
. Sie können die Verbindungs-ID abrufen, indem Sie sich die Verbindungsdetails in der Console ansehen und den Wert im letzten Abschnitt der voll qualifizierten Verbindungs-ID kopieren, der unter Verbindungs-ID angezeigt wird. Google Cloud Beispiel:projects/myproject/locations/connection_location/connections/myconnection
.Sie müssen dem Dienstkonto der Verbindung die Rolle „Storage-Objekt-Nutzer“ (
roles/storage.objectUser
) für jeden Cloud Storage-Bucket zuweisen, über den Sie auf Objekte zugreifen.Die Verbindung muss sich im selben Projekt und in derselben Region wie die Abfrage befinden, in der Sie die Funktion aufrufen.
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
ARRAY<ObjectRef>
-Spalte erstellen
Sie können eine ARRAY<STRUCT<uri STRING, version STRING, authorizer STRING, details JSON>>
-Spalte erstellen, die Arrays von ObjectRef
-Werten enthält. Sie können beispielsweise ein Video in separate Bilder aufteilen und diese dann als Array von ObjectRef
-Werten speichern.
Mit der Funktion ARRAY_AGG
können Sie Arrays von ObjectRef
-Werten zusammenfassen. Verwenden Sie dazu bei Bedarf die Klausel ORDER BY
, um die Objektreihenfolge beizubehalten. Mit dem UNNEST
-Operator können Sie ein Array von ObjectRef
-Werten in einzelne ObjectRef
-Werte parsen. Dazu können Sie auch die WITH OFFSET
-Klausel verwenden, um bei Bedarf die Objektreihenfolge beizubehalten.
Du kannst Objektmetadaten wie den URI-Pfad und den Objektdateinamen verwenden, um ObjectRef
-Werte, die Objekt-Chunks darstellen, einem ObjectRef
-Wert zuzuordnen, der das ursprüngliche Objekt darstellt.
Ein Beispiel für die Arbeit mit Arrays von ObjectRef
-Werten finden Sie im Abschnitt Behandelte geordnete multimodale Daten mit ARRAY<ObjectRef>
-Werten des Leitfadens Multimodale Daten mit SQL analysieren.
ObjectRef
-Spalte aktualisieren
Wählen Sie eine der folgenden Optionen aus, um eine ObjectRef
-Spalte in einer Standardtabelle zu aktualisieren:
Objekttabelle
Eine ObjectRef
-Spalte mit Daten aus einer ref
-Spalte einer Objekttabelle aktualisieren:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
UPDATE PROJECT_ID.DATASET_ID.TABLE_NAME SET objectrefcolumn = (SELECT ref FROM DATASET_ID.OBJECT_TABLE WHERE OBJECT_TABLE.uri = TABLE_NAME.uri) WHERE uri != "";
Dabei gilt:
PROJECT_ID
: Ihre Projekt-ID. Sie können dieses Argument überspringen, wenn Sie die Tabelle in Ihrem aktuellen Projekt erstellen.DATASET_ID
: die ID des zu erstellenden Datasets.TABLE_NAME
: der Name der Standardtabelle, die Sie neu erstellen.OBJECT_TABLE
: der Name der Objekttabelle, die dieselben Objektdaten wie die SpalteObjectRef
der Standardtabelle enthält.
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
SQL-Funktionen
Aktualisieren Sie eine ObjectRef
-Spalte mithilfe der Ausgabe der Funktionen OBJ.FETCH_METADATA
und OBJ.MAKE_REF
:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
UPDATE PROJECT_ID.DATASET_ID.TABLE_NAME SET objectrefcolumn = (SELECT OBJ.FETCH_METADATA(OBJ.MAKE_REF(uri, 'CONNECTION_ID'))) WHERE uri != "";
Dabei gilt:
PROJECT_ID
: Ihre Projekt-ID. Sie können dieses Argument überspringen, wenn Sie die Tabelle in Ihrem aktuellen Projekt erstellen.DATASET_ID
: die ID des zu erstellenden Datasets.TABLE_NAME
: der Name der Standardtabelle, die Sie neu erstellen.CONNECTION_ID
: EinSTRING
-Wert, der eine Cloud-Ressourcenverbindung im Formatlocation.connection_id
enthält, über die der Dienst auf die Objekte in Cloud Storage zugreifen kann. Beispiel:us-west1.myconnection
. Sie können die Verbindungs-ID abrufen, indem Sie sich die Verbindungsdetails in der Console ansehen und den Wert im letzten Abschnitt der voll qualifizierten Verbindungs-ID kopieren, der unter Verbindungs-ID angezeigt wird. Google Cloud Beispiel:projects/myproject/locations/connection_location/connections/myconnection
.Sie müssen dem Dienstkonto der Verbindung die Rolle „Storage-Objekt-Nutzer“ (
roles/storage.objectUser
) für jeden Cloud Storage-Bucket zuweisen, über den Sie auf Objekte zugreifen.Die Verbindung muss sich im selben Projekt und in derselben Region wie die Abfrage befinden, in der Sie die Funktion aufrufen.
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
Nächste Schritte
- Multimodale Daten analysieren
- Multimodale Daten mit SQL analysieren
- Multimodale Daten in Python mit BigQuery DataFrames analysieren