Especifica columnas ObjectRef en esquemas de tablas
En este documento, se describe cómo definir un esquema de tabla estándar de BigQuery con columnas que pueden almacenar valores de ObjectRef
.
Los valores de ObjectRef
proporcionan metadatos e información de conexión para los objetos en Cloud Storage. Usa valores ObjectRef
cuando necesites integrar datos no estructurados en una tabla estándar. Por ejemplo, en una tabla de productos, puedes almacenar imágenes de productos en la misma fila con el resto de la información del producto agregando una columna que contenga valores ObjectRef
. Puedes almacenar valores de ObjectRef
en columnas de STRUCT
que usan el formato ObjectRef
, que es STRUCT<uri STRING, version STRING, authorizer STRING, details JSON>
.
Para obtener más información sobre cómo trabajar con datos multimodales, consulta Analiza datos multimodales.
Para ver un instructivo que muestra cómo trabajar con datos de ObjectRef
, consulta Analiza datos multimodales con SQL.
Para obtener información sobre cómo trabajar con datos multimodales en Python, consulta Analiza datos multimodales en Python con BigQuery DataFrames.
Requisitos previos
Para completar y actualizar los valores de ObjectRef
en una tabla estándar, esta debe tener una columna STRING
que contenga información del URI de los objetos relacionados de Cloud Storage.
Debes tener un bucket de Cloud Storage que contenga los mismos objetos que se identifican en los datos del URI de la tabla estándar de destino.
Si deseas mantener los valores de ObjectRef
en una tabla estándar con una tabla de objetos, también debes tener una tabla de objetos que represente los objetos de ese bucket.
Cómo mantener los valores de ObjectRef
Puedes usar una tabla de objetos para propagar y actualizar los valores de ObjectRef
en una tabla estándar. Si estás en la lista de entidades permitidas para la versión preliminar, todas las tablas de objetos que crees tendrán una columna ref
que contiene un valor ObjectRef
para el objeto determinado. Puedes usar el URI del objeto para unir la tabla estándar a la tabla del objeto y, así, completar y actualizar los valores de ObjectRef
. Recomendamos este enfoque para la escalabilidad, ya que evita la necesidad de recuperar los metadatos del objeto de Cloud Storage.
Si no quieres crear una tabla de objetos, puedes usar las funciones OBJ.FETCH_METADATA
y OBJ.MAKE_REF
para propagar y actualizar los valores de ObjectRef
recuperando los metadatos de objetos directamente desde Cloud Storage. Este enfoque podría ser menos escalable, ya que requiere la recuperación de los metadatos del objeto de Cloud Storage.
Crea una columna ObjectRef
Para crear y completar una columna ObjectRef
en una tabla estándar, selecciona una de las siguientes opciones:
Tabla de objetos
Crea y propaga una columna ObjectRef
basada en los datos de una columna ref
de la tabla de objetos:
En la consola de Trusted Cloud , ve a la página BigQuery.
En el editor de consultas, escribe la siguiente oración:
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;
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyecto Puedes omitir este argumento si creas la tabla en tu proyecto actual.DATASET_ID
: Es el ID del conjunto de datos que crearás.TABLE_NAME
: Es el nombre de la tabla estándar que recrearás.OBJECT_TABLE
: Es el nombre de la tabla de objetos que contiene los datos de objetos que deseas integrar en la tabla estándar.
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
funciones SQL
Crea y propaga una columna ObjectRef
basada en el resultado de las funciones OBJ.FETCH_METADATA
y OBJ.MAKE_REF
:
En la consola de Trusted Cloud , ve a la página BigQuery.
En el editor de consultas, escribe la siguiente oración:
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;
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyecto Puedes omitir este argumento si creas la tabla en tu proyecto actual.DATASET_ID
: Es el ID del conjunto de datos que crearás.TABLE_NAME
: Es el nombre de la tabla estándar que recrearás.CONNECTION_ID
: Es un valor deSTRING
que contiene una conexión de recursos de nube que el servicio puede usar para acceder a los objetos en Cloud Storage, en el formatolocation.connection_id
. Por ejemplo,us-west1.myconnection
. Puedes obtener el ID de conexión consultando los detalles de la conexión en la consola de Trusted Cloud y copiando el valor de la última sección del ID de conexión completamente calificado que se muestra en ID de conexión. Por ejemplo,projects/myproject/locations/connection_location/connections/myconnection
.Debes otorgar el rol de usuario de objetos de almacenamiento (
roles/storage.objectUser
) a la cuenta de servicio de la conexión en cualquier bucket de Cloud Storage en el que la uses para acceder a objetos.La conexión debe estar en el mismo proyecto y la misma región que la consulta en la que llamas a la función.
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
Crea una columna ARRAY<ObjectRef>
Puedes crear una columna ARRAY<STRUCT<uri STRING, version STRING, authorizer STRING, details JSON>>
para que contenga arrays de valores ObjectRef
. Por ejemplo, puedes dividir un video en imágenes separadas y, luego, almacenar estas imágenes como un array de valores ObjectRef
.
Puedes usar la función ARRAY_AGG
para agregar arreglos de valores ObjectRef
, lo que incluye el uso de la cláusula ORDER BY
para conservar el orden de los objetos si es necesario. Puedes usar el operador UNNEST
para analizar un array de valores ObjectRef
en valores ObjectRef
individuales, lo que incluye el uso de la cláusula WITH OFFSET
para conservar el orden de los objetos si es necesario.
Puedes usar metadatos de objetos, como la ruta de URI y el nombre de archivo del objeto, para asignar valores de ObjectRef
que representan fragmentos de objetos a un valor de ObjectRef
que representa el objeto original.
Para ver un ejemplo de cómo trabajar con arreglos de valores de ObjectRef
, consulta la sección Procesa datos multimodales ordenados con valores de ARRAY<ObjectRef>
del instructivo Analiza datos multimodales con SQL.
Actualiza una columna ObjectRef
Para actualizar una columna ObjectRef
en una tabla estándar, selecciona una de las siguientes opciones:
Tabla de objetos
Actualiza una columna ObjectRef
con datos de una columna ref
de la tabla de objetos:
En la consola de Trusted Cloud , ve a la página BigQuery.
En el editor de consultas, escribe la siguiente oración:
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 != "";
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyecto Puedes omitir este argumento si creas la tabla en tu proyecto actual.DATASET_ID
: Es el ID del conjunto de datos que crearás.TABLE_NAME
: Es el nombre de la tabla estándar que recrearás.OBJECT_TABLE
: Es el nombre de la tabla de objetos que contiene los mismos datos de objetos que la columna de la tabla estándarObjectRef
.
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
funciones SQL
Actualiza una columna de ObjectRef
con el resultado de las funciones OBJ.FETCH_METADATA
y OBJ.MAKE_REF
:
En la consola de Trusted Cloud , ve a la página BigQuery.
En el editor de consultas, escribe la siguiente oración:
UPDATE PROJECT_ID.DATASET_ID.TABLE_NAME SET objectrefcolumn = (SELECT OBJ.FETCH_METADATA(OBJ.MAKE_REF(uri, 'CONNECTION_ID'))) WHERE uri != "";
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyecto Puedes omitir este argumento si creas la tabla en tu proyecto actual.DATASET_ID
: Es el ID del conjunto de datos que crearás.TABLE_NAME
: Es el nombre de la tabla estándar que recrearás.CONNECTION_ID
: Es un valor deSTRING
que contiene una conexión de recursos de nube que el servicio puede usar para acceder a los objetos en Cloud Storage, en el formatolocation.connection_id
. Por ejemplo,us-west1.myconnection
. Puedes obtener el ID de conexión consultando los detalles de la conexión en la consola de Trusted Cloud y copiando el valor de la última sección del ID de conexión completamente calificado que se muestra en ID de conexión. Por ejemplo,projects/myproject/locations/connection_location/connections/myconnection
.Debes otorgar el rol de usuario de objetos de almacenamiento (
roles/storage.objectUser
) a la cuenta de servicio de la conexión en cualquier bucket de Cloud Storage en el que la uses para acceder a objetos.La conexión debe estar en el mismo proyecto y la misma región que la consulta en la que llamas a la función.
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
¿Qué sigue?
- Analiza datos multimodales.
- Analiza datos multimodales con SQL.
- Analiza datos multimodales en Python con BigQuery DataFrames.