Specificare le colonne ObjectRef negli schemi delle tabelle
Questo documento descrive come definire uno schema di tabella standard BigQuery
con colonne che possono archiviare valori ObjectRef
.
I valori ObjectRef
forniscono metadati e informazioni di connessione per gli oggetti in Cloud Storage. Utilizza i valori ObjectRef
quando devi
integrare dati non strutturati in una tabella standard. Ad esempio, in una tabella dei prodotti, puoi memorizzare le immagini dei prodotti nella stessa riga del resto delle informazioni sui prodotti aggiungendo una colonna contenente valori ObjectRef
. Puoi
memorizzare i valori ObjectRef
nelle colonne STRUCT
che utilizzano il
formato ObjectRef
,
che è
STRUCT<uri STRING, version STRING, authorizer STRING, details JSON>
.
Per saperne di più sull'utilizzo dei dati multimodali, consulta la sezione
Analizzare i dati multimodali.
Per un tutorial che mostra come lavorare con i dati ObjectRef
, consulta
Analizzare dati multimodali con SQL.
Per informazioni sull'utilizzo dei dati multimodali in Python, consulta
Analizzare i dati multimodali in Python con BigQuery DataFrames.
Prerequisiti
Per compilare e aggiornare i valori ObjectRef
in una tabella standard, la tabella deve
avere una colonna STRING
che contenga informazioni sull'URI per gli oggetti Cloud Storage correlati.
Devi disporre di un bucket Cloud Storage che contenga gli stessi oggetti
identificati nei dati URI della tabella standard di destinazione.
Se vuoi
mantenere i valori ObjectRef
in una tabella standard
utilizzando una tabella degli oggetti, devi
avere anche una tabella degli oggetti che rappresenti gli oggetti nel bucket.
Mantenimento dei valori di ObjectRef
Puoi utilizzare una tabella degli oggetti per popolare e aggiornare i valori di ObjectRef
in una tabella standard. Se sei nella lista consentita per l'anteprima, tutte le tabelle degli oggetti
che crei hanno una colonna ref
che contiene un valore ObjectRef
per l'oggetto specificato. Puoi utilizzare l'URI dell'oggetto per unire la tabella standard alla tabella degli oggetti per compilare e aggiornare i valori di ObjectRef
. Consigliamo questo approccio per la scalabilità, perché evita la necessità di recuperare i metadati degli oggetti da Cloud Storage.
Se non vuoi creare una tabella degli oggetti, puoi utilizzare le funzioni
OBJ.FETCH_METADATA
e
OBJ.MAKE_REF
per compilare e aggiornare i valori ObjectRef
recuperando i metadati degli oggetti
direttamente da Cloud Storage. Questo approccio potrebbe essere meno scalabile,
perché richiede il recupero dei metadati degli oggetti da Cloud Storage.
Crea una colonna ObjectRef
Per creare e compilare una colonna ObjectRef
in una tabella standard, seleziona una delle
seguenti opzioni:
Tabella degli oggetti
Crea e compila una colonna ObjectRef
in base ai dati di una colonna ref
di una tabella di oggetti:
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
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;
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progetto. Puoi saltare questo argomento se stai creando la tabella nel progetto attuale.DATASET_ID
: l'ID del set di dati che stai creando.TABLE_NAME
: il nome della tabella standard che stai ricreando.OBJECT_TABLE
: il nome della tabella degli oggetti che contiene i dati degli oggetti che vuoi integrare nella tabella standard.
Fai clic su
Esegui.
Per maggiori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
Funzioni SQL
Crea e compila una colonna ObjectRef
in base all'output delle funzioni
OBJ.FETCH_METADATA
e OBJ.MAKE_REF
:
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
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;
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progetto. Puoi saltare questo argomento se stai creando la tabella nel progetto attuale.DATASET_ID
: l'ID del set di dati che stai creando.TABLE_NAME
: il nome della tabella standard che stai ricreando.CONNECTION_ID
: un valoreSTRING
che contiene una connessione alla risorsa cloud che il servizio può utilizzare per accedere agli oggetti in Cloud Storage, nel formatolocation.connection_id
. Ad esempio,us-west1.myconnection
. Puoi ottenere l'ID connessione visualizzando i dettagli della connessione nella console Google Cloud e copiando il valore nell'ultima sezione dell'ID connessione completo visualizzato in ID connessione. Ad esempio,projects/myproject/locations/connection_location/connections/myconnection
.Devi concedere il ruolo Utente oggetti Storage (
roles/storage.objectUser
) al account di servizio della connessione su qualsiasi bucket Cloud Storage in cui lo utilizzi per accedere agli oggetti.La connessione deve trovarsi nello stesso progetto e nella stessa regione della query in cui chiami la funzione.
Fai clic su
Esegui.
Per maggiori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
Crea una colonna ARRAY<ObjectRef>
Puoi creare una
ARRAY<STRUCT<uri STRING, version STRING, authorizer STRING, details JSON>>
colonna per contenere array di valori ObjectRef
. Ad esempio, potresti dividere un video in immagini separate e
poi memorizzare queste immagini come array di valori ObjectRef
.
Puoi utilizzare la
funzione ARRAY_AGG
per aggregare array di valori ObjectRef
, inclusa la clausola ORDER BY
per conservare l'ordine degli oggetti, se necessario. Puoi utilizzare l'operatore UNNEST
per analizzare un array di valori ObjectRef
in singoli valori ObjectRef
, incluso l'utilizzo della clausola WITH OFFSET
per preservare l'ordine degli oggetti, se necessario.
Puoi utilizzare i metadati dell'oggetto, come il percorso URI e il nome file dell'oggetto, per
mappare i valori ObjectRef
che rappresentano i blocchi dell'oggetto a un valore ObjectRef
che rappresenta l'oggetto originale.
Per vedere un esempio di come utilizzare gli array di valori ObjectRef
, consulta la sezione
Elaborare dati multimodali ordinati utilizzando i valori ARRAY<ObjectRef>
del tutorial
Analizzare dati multimodali con SQL.
Aggiorna una colonna ObjectRef
Per aggiornare una colonna ObjectRef
in una tabella standard, seleziona una delle
seguenti opzioni:
Tabella degli oggetti
Aggiorna una colonna ObjectRef
utilizzando i dati di una colonna della tabella degli oggetti ref
:
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
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 != "";
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progetto. Puoi saltare questo argomento se stai creando la tabella nel progetto attuale.DATASET_ID
: l'ID del set di dati che stai creando.TABLE_NAME
: il nome della tabella standard che stai ricreando.OBJECT_TABLE
: il nome della tabella degli oggetti che contiene gli stessi dati degli oggetti della colonna della tabella standardObjectRef
.
Fai clic su
Esegui.
Per maggiori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
Funzioni SQL
Aggiorna una colonna ObjectRef
utilizzando l'output delle funzioni
OBJ.FETCH_METADATA
e OBJ.MAKE_REF
:
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
UPDATE PROJECT_ID.DATASET_ID.TABLE_NAME SET objectrefcolumn = (SELECT OBJ.FETCH_METADATA(OBJ.MAKE_REF(uri, 'CONNECTION_ID'))) WHERE uri != "";
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progetto. Puoi saltare questo argomento se stai creando la tabella nel progetto attuale.DATASET_ID
: l'ID del set di dati che stai creando.TABLE_NAME
: il nome della tabella standard che stai ricreando.CONNECTION_ID
: un valoreSTRING
che contiene una connessione alla risorsa cloud che il servizio può utilizzare per accedere agli oggetti in Cloud Storage, nel formatolocation.connection_id
. Ad esempio,us-west1.myconnection
. Puoi ottenere l'ID connessione visualizzando i dettagli della connessione nella console Google Cloud e copiando il valore nell'ultima sezione dell'ID connessione completo visualizzato in ID connessione. Ad esempio,projects/myproject/locations/connection_location/connections/myconnection
.Devi concedere il ruolo Utente oggetti Storage (
roles/storage.objectUser
) al account di servizio della connessione su qualsiasi bucket Cloud Storage in cui lo utilizzi per accedere agli oggetti.La connessione deve trovarsi nello stesso progetto e nella stessa regione della query in cui chiami la funzione.
Fai clic su
Esegui.
Per maggiori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
Passaggi successivi
- Analizzare i dati multimodali.
- Analizza i dati multimodali con SQL.
- Analizza i dati multimodali in Python con BigQuery DataFrames.