En este instructivo, se muestra cómo usar consultas de SQL, la función AI.GENERATE, la función AI.EMBED y los DataFrames de BigQuery para analizar datos multimodales del conjunto de datos públicos de la tienda de mascotas Cymbal.
La función AI.GENERATE te permite analizar cualquier combinación de datos estructurados y no estructurados, y la función AI.EMBED te permite crear incorporaciones a partir de datos de texto o imágenes en BigQuery.
Para encontrar imágenes similares, usa la función VECTOR_SEARCH. La función VECTOR_SEARCH te permite realizar una búsqueda semántica o híbrida en las incorporaciones para encontrar entidades similares.
En este instructivo, se usa una tabla de objetos persistente que almacena valores de ObjectRef.
Objetivos
- Usa valores de
ObjectRefpara almacenar datos de imágenes junto con datos estructurados en una tabla de BigQuery. - Usa la función
AI.GENERATEpara enriquecer tus datos. - Usa la función
AI.EMBEDpara generar incorporaciones basadas en datos de imágenes. - Usa la función
VECTOR_SEARCHpara encontrar imágenes similares. - Usa arrays de valores
ObjectRefpara resumir manuales del usuario.
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
- BigQuery: you incur costs for the data that you process in BigQuery.
- Cloud Storage: you incur costs for reading the objects stored in Cloud Storage.
- Gemini Enterprise Agent Platform: you incur costs for calls to Agent Platform models.
Para generar una estimación de costos en función del uso previsto,
usa la calculadora de precios.
Para obtener más información sobre los costos, consulta las siguientes páginas de precios:
Antes de comenzar
-
En la consola de Google Cloud , en la página del selector de proyectos, selecciona o crea un proyecto de Google Cloud .
Roles necesarios para seleccionar o crear un proyecto
- Selecciona un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
-
Crear un proyecto: Para crear un proyecto, necesitas el rol de Creador de proyectos (
roles/resourcemanager.projectCreator), que contiene el permisoresourcemanager.projects.create. Obtén más información para otorgar roles.
-
Verifica que la facturación esté habilitada para tu proyecto de Google Cloud .
-
Habilita las APIs de BigQuery, BigQuery Connection, Cloud Storage y Agent Platform.
Roles necesarios para habilitar las APIs
Para habilitar APIs, necesitas el permiso
serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtener este permiso a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.
Roles obligatorios
Si quieres obtener los permisos que necesitas para completar este instructivo, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Crear conjuntos de datos y tablas:
BigQuery Data Owner (
roles/bigquery.dataOwner) -
Ejecutar trabajos de BigQuery:
Usuario de trabajo de BigQuery (
roles/bigquery.jobUser) -
Crear conexiones:
Administrador de conexión de BigQuery (
roles/bigquery.connectionAdmin) -
Otorga permisos a la cuenta de servicio de una conexión:Administrador de IAM del proyecto (
roles/resourcemanager.projectIamAdmin) -
Crea URLs que te permitan leer y modificar objetos de Cloud Storage:
Administrador de ObjectRef de BigQuery (
roles/bigquery.objectRefAdmin)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Crea el conjunto de datos, las tablas, los modelos y la conexión
En esta sección, crearás el conjunto de datos, la conexión, las tablas y los modelos que se usan en este instructivo.
Crea un conjunto de datos
Crea un conjunto de datos de BigQuery para que contenga los objetos que crearás en este instructivo. Para ello, elige una de las siguientes opciones:
Console
En la consola de Google Cloud , ve a la página BigQuery.
En el panel de la izquierda, haz clic en Explorar.

Si no ves el panel izquierdo, haz clic en Expandir panel izquierdo para abrirlo.
En Explorador, expande tu proyecto y, luego, haz clic en Conjuntos de datos.
En la página Conjuntos de datos, haz clic en Crear conjunto de datos.
En la página Crear conjunto de datos, haz lo siguiente:
En ID del conjunto de datos, ingresa
cymbal_pets.En Ubicación de los datos, selecciona EE.UU..
Deja la configuración predeterminada restante como está y haz clic en Crear conjunto de datos.
SQL
Usa la sentencia CREATE SCHEMA.
En la consola de Google Cloud , ve a la página BigQuery.
En el editor de consultas, ingresa la siguiente sentencia:
CREATE SCHEMA
PROJECT_ID.cymbal_pets OPTIONS ( description = 'Dataset for BigQuery ML tutorial', location = 'US');Reemplaza
PROJECT_IDcon el ID del proyecto.Haz clic en Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
Recibirás un mensaje de confirmación similar al siguiente: The dataset
named cymbal_pets was created.
Crear una conexión
Crea una conexión de recurso de Cloud y obtén la cuenta de servicio de la conexión. BigQuery usa la conexión para acceder a los objetos en Cloud Storage.
En el panel de la izquierda, haz clic en Explorar.

En el panel Explorador, haz clic en Conexiones.
En la página Connections, haz clic en Create connection.
En la página Fuente de datos externa, haz lo siguiente:
En Tipo de conexión, elige Modelos remotos de Vertex AI, funciones remotas, Lakehouse y Spanner (Cloud Resource).
En el campo ID de conexión, escribe
cymbal_conn.Deja la configuración restante como está y, luego, haz clic en Crear conexión.
En la página Conexiones, haz clic en
cymbal_conn.En el panel Información de conexión, copia el valor del ID de la cuenta de servicio. Es necesario para los siguientes pasos.
Otorga permisos para usar los modelos de Agent Platform
Otorga a la cuenta de servicio de la conexión el rol de usuario de Agent Platform para acceder a los modelos remotos en Agent Platform. Debes otorgar este rol en el mismo proyecto que creaste o seleccionaste anteriormente. Si otorgas los roles en un proyecto diferente, se produce el error bqcx-1234567890-abcd@gcp-sa-bigquery-condel.
does not have the permission to access resource.
Para otorgar a la cuenta de servicio acceso al uso de los modelos de Agent Platform, sigue estos pasos:
Ir a la página IAM y administración
Haz clic en Otorgar acceso.
En el cuadro de diálogo Otorgar acceso, haz lo siguiente:
En el campo Principales nuevas (New principals), ingresa el ID de la cuenta de servicio que copiaste antes.
En el campo Selecciona un rol, elige o busca Usuario de Agent Platform.
Haz clic en Guardar.
Crea la tabla products
Para crear una tabla estándar que contenga la información del producto de mascotas Cymbal, sigue estos pasos para cargar los datos desde Cloud Storage:
En la consola de Google Cloud , ve a la página Studio.
Para crear la tabla
products, elige una de las siguientes opciones:SQL
Pega este comando en el editor de consultas y, luego, haz clic en Ejecutar:
LOAD DATA OVERWRITE cymbal_pets.products FROM FILES( format = 'avro', uris = [ 'gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/tables/products/products_*.avro']);
Recibirás un mensaje de confirmación similar al siguiente:
Data was successfully loaded into managed table.Permite trabajar con BigQuery DataFrames.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Crea la tabla product_images
Para crear una tabla de objetos (product_images) que contenga las imágenes de los productos de mascotas de Cymbal, selecciona una de las siguientes opciones:
* { SQL }
Paste this command into the query editor, and then click
<span class="material-icons" aria-hidden="true">play_circle</span>
**Run**:
<pre class="lang-googlesql notranslate prettyprint devsite-click-to-copy">
CREATE OR REPLACE EXTERNAL TABLE cymbal_pets.product_images
WITH CONNECTION `us.cymbal_conn`
OPTIONS (
object_metadata = 'SIMPLE',
uris = ['gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/images/*.png'],
max_staleness = INTERVAL 30 MINUTE,
metadata_cache_mode = AUTOMATIC);
</pre>
You receive a confirmation message similar to the following: `This
statement created a new table named product_images.`
* { BigQuery DataFrames }
Before trying this sample, follow the BigQuery DataFrames
setup instructions in the BigQuery quickstart
using BigQuery DataFrames.
For more information, see the
BigQuery DataFrames reference documentation.
To authenticate to BigQuery, set up Application Default Credentials.
For more information, see Set
up ADC for a local development environment.
Crear modelos
Las instrucciones de SQL de este instructivo muestran cómo llamar a funciones basadas en IA que no requieren que crees un modelo. Si sigues las instrucciones de BigQuery DataFrames, selecciona esa opción para crear modelos remotos que representen un modelo de Gemini y un modelo de embeddings multimodal.
SQL
Puedes omitir este paso.
Permite trabajar con BigQuery DataFrames.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames.
Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación.
Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Crea una tabla products_mm con datos multimodales
Crea una tabla products_mm que contenga una columna image propagada con imágenes de productos de la tabla de objetos product_images. La columna image que se crea es una columna STRUCT que usa valores ObjectRef para almacenar datos de imágenes junto con datos estructurados en una tabla estándar de BigQuery.
Un valor de ObjectRef es un tipo STRUCT con un esquema predefinido que hace referencia a objetos de Cloud Storage para el análisis multimodal.
Los valores de ObjectRef se pueden procesar con funciones de OBJ, funciones basadas en IA o funciones definidas por el usuario de Python.
Para crear y completar la tabla products_mm, sigue estos pasos:
Para crear una tabla de products_mm, elige una de las siguientes opciones:
SQL
Pega este comando en el editor de consultas y, luego, haz clic en
Ejecutar:
CREATE OR REPLACE TABLE cymbal_pets.products_mm
AS
SELECT products.* EXCEPT (uri), ot.ref AS image FROM cymbal_pets.products
INNER JOIN cymbal_pets.product_images ot
ON ot.uri = products.uri;
Recibirás un mensaje de confirmación similar al siguiente: This
statement created a new table named products_mm.
Permite trabajar con BigQuery DataFrames.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames.
Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación.
Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Para ver los datos de la columna image, elige una de las siguientes opciones:
SQL
Pega este comando en el editor de consultas y, luego, haz clic en
Ejecutar:
SELECT product_name, image
FROM cymbal_pets.products_mm
Permite trabajar con BigQuery DataFrames.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames.
Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación.
Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Los resultados son similares a los siguientes:
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
| product_name | image.uri | image.version | image.authorizer | image.details |
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
| AquaClear Aquarium Background | gs://cloud-samples-data/bigquery/ | 1234567891011 | myproject.region.myconnection | {"gcs_metadata":{"content_type":"image/png", |
| | tutorials/cymbal-pets/images/ | | | "md5_hash":"494f63b9b137975ff3e7a11b060edb1d", |
| | aquaclear-aquarium-background.png | | | "size":1282805,"updated":1742492680017000}} |
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
| AquaClear Aquarium | gs://cloud-samples-data/bigquery/ | 2345678910112 | myproject.region.myconnection | {"gcs_metadata":{"content_type":"image/png", |
| Gravel Vacuum | tutorials/cymbal-pets/images/ | | | "md5_hash":"b7bfc2e2641a77a402a1937bcf0003fd", |
| | aquaclear-aquarium-gravel-vacuum.png | | | "size":820254,"updated":1742492682411000}} |
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
| ... | ... | ... | | ... |
+--------------------------------+--------------------------------------+---------------+-------------------------------+------------------------------------------------+
Genera información del producto
Usa la función AI.GENERATE para generar los siguientes datos de los productos de la tienda de mascotas:
- Agrega una columna
image_description a la tabla products_mm.
- Completa las columnas
animal_type, search_keywords y subcategory de la tabla products_mm.
- Ejecuta una consulta que devuelva una descripción de cada marca de producto y un recuento de la cantidad de productos de esa marca. La descripción de la marca se genera analizando la información del producto de todos los productos de esa marca, incluidas las imágenes de los productos.
Con la función AI.GENERATE, puedes generar texto o resultados estructurados según un esquema personalizado que especifiques. La función envía solicitudes a un modelo de Gemini y devuelve un struct que contiene los datos generados, la respuesta completa del modelo y un estado.
Para generar los datos del producto, sigue estos pasos:
Para generar la información del producto con AI.GENERATE, elige una de las siguientes opciones:
SQL
Para crear y propagar la columna image_description, pega lo siguiente en el editor de consultas y, luego, haz clic en
Ejecutar:
-- Add the column to the existing table
ALTER TABLE bqml_tutorial.products_mm
ADD COLUMN IF NOT EXISTS image_description STRING;
-- Populate the new column using the AI.GENERATE function
UPDATE bqml_tutorial.products_mm
SET image_description = AI.GENERATE(
('Describe the following image: ', image),
endpoint => 'gemini-3.5-flash'
).result
WHERE image_description IS NULL;
Recibirás un mensaje de confirmación similar al siguiente: This
statement altered the table named products_mm.
Permite trabajar con BigQuery DataFrames.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames.
Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación.
Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Para ver el contenido de la columna image_description, pega lo siguiente en el editor de consultas y, luego, haz clic en Ejecutar:
SELECT product_name, image_description
FROM cymbal_pets.products_mm;
Los resultados son similares a los siguientes:
+--------------------------------+-------------------------------------+
| product_name | image_description |
+--------------------------------+-------------------------------------+
| AquaClear Aquarium Background | The image shows a colorful coral |
| | reef backdrop. The background is a |
| | blue ocean with a bright light... |
| | |
| | |
+--------------------------------+-------------------------------------+
| AquaClear Aquarium | The image shows a long, clear |
| Gravel Vacuum | plastic tube with a green hose |
| | attached to one end. The tube... |
| | |
| | |
+--------------------------------+-------------------------------------+
| ... | ... |
+--------------------------------+-------------------------------------+
Para actualizar las columnas animal_type, search_keywords y subcategory con datos generados, elige una de las siguientes opciones:
SQL
Pega lo siguiente en el editor de consultas y, luego, haz clic en
Ejecutar:
UPDATE cymbal_pets.products_mm t
SET
animal_type = r.animal_type,
search_keywords = SPLIT(r.search_keywords, ','),
subcategory = r.subcategory
FROM (
SELECT
product_id,
g.* EXCEPT(full_response, status)
FROM bqml_tutorial.products_mm,
UNNEST([AI.GENERATE(
('For the image and description of a pet product, concisely generate the following metadata: 1) animal_type and 2) 5 SEO search keywords (comma separated), and 3) product subcategory. ', image, description),
endpoint => 'gemini-3.5-flash',
output_schema => 'animal_type STRING, search_keywords STRING, subcategory STRING'
)]) AS g
) r
WHERE t.product_id = r.product_id;
Recibirás un mensaje de confirmación similar al siguiente: This
statement modified 205 rows in products_mm.
Permite trabajar con BigQuery DataFrames.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames.
Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación.
Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Para ver los datos generados, elige una de las siguientes opciones:
SQL
Pega lo siguiente en el editor de consultas y, luego, haz clic en
Ejecutar:
SELECT
product_name,
image_description,
animal_type,
search_keywords,
subcategory,
FROM cymbal_pets.products_mm;
Permite trabajar con BigQuery DataFrames.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames.
Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación.
Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Los resultados son similares a los siguientes:
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
| product_name | image_description | animal_type | search_keywords | subcategory |
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
| AquaClear Aquarium Background | The image shows a colorful coral | fish | aquarium background | aquarium decor |
| | reef backdrop. The background is a | | fish tank backdrop | |
| | blue ocean with a bright light... | | coral reef decor | |
| | | | underwater scenery | |
| | | | aquarium decoration | |
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
| AquaClear Aquarium | The image shows a long, clear | fish | aquarium gravel vacuum | aquarium |
| Gravel Vacuum | plastic tube with a green hose | | aquarium cleaning | cleaning |
| | attached to one end. The tube... | | aquarium maintenance | |
| | | | fish tank cleaning | |
| | | | gravel siphon | |
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
| ... | ... | ... | ... | ... |
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+
Para generar una descripción de cada marca de producto y un recuento de la cantidad de productos de esa marca, elige una de las siguientes opciones:
SQL
Pega lo siguiente en el editor de consultas y, luego, haz clic en
Ejecutar:
SELECT
brand,
COUNT(*) AS cnt,
AI.GENERATE(('Use the images and text to give one concise brand description ',
'for a website brand page. Return the description only.',
ARRAY_AGG(image LIMIT 10), ARRAY_AGG(description), ARRAY_AGG(category),
ARRAY_AGG(subcategory)),
endpoint => 'gemini-2.5-pro').result AS brand_description
FROM
cymbal_pets.products_mm
GROUP BY brand
ORDER BY cnt DESC;
Permite trabajar con BigQuery DataFrames.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames.
Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación.
Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Los resultados son similares a los siguientes:
+--------------+-------------------------------------+-----+
| brand | brand_description | cnt |
+--------------+-------------------------------------+-----+
| AquaClear | AquaClear is a brand of aquarium | 33 |
| | and pond care products that offer | |
| | a wide range of solutions for... | |
+--------------+-------------------------------------+-----+
| Ocean | Ocean Bites is a brand of cat food | 28 |
| Bites | that offers a variety of recipes | |
| | and formulas to meet the specific.. | |
+--------------+-------------------------------------+-----+
| ... | ... |... |
+--------------+-------------------------------------+-----+
Genera embeddings y realiza una búsqueda de vectores
Generar embeddings a partir de datos de imágenes y, luego, usar los embeddings para devolver imágenes similares con la búsqueda de vectores
En una situación de producción, te recomendamos que crees un índice de vectores antes de ejecutar una búsqueda de vectores. Un índice de vectores te permite realizar la búsqueda de vectores más rápido y muestra resultados más aproximados, pero se reduce la recuperación.
Para crear las incorporaciones y realizar una búsqueda de vectores, sigue estos pasos:
Para crear la tabla products_embeddings, elige una de las siguientes opciones:
SQL
Pega lo siguiente en el editor de consultas y, luego, haz clic en
Ejecutar:
CREATE OR REPLACE TABLE cymbal_pets.products_embedding
AS (
SELECT
product_id,
AI.EMBED(image, endpoint => 'gemini-embedding-2').result AS embedding,
image
FROM cymbal_pets.products_mm
);
Recibirás un mensaje de confirmación similar al siguiente: This
statement created a new table named products_embedding.
Permite trabajar con BigQuery DataFrames.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames.
Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación.
Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Para realizar una búsqueda de vectores que muestre imágenes de productos similares a la imagen de entrada proporcionada, elige una de las siguientes opciones:
SQL
Pega lo siguiente en el editor de consultas y, luego, haz clic en
Ejecutar:
SELECT *
FROM
VECTOR_SEARCH(
TABLE cymbal_pets.products_embedding,
'embedding',
query_value => AI.EMBED(
OBJ.MAKE_REF('gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/images/cozy-naps-cat-scratching-post-with-condo.png'),
endpoint => 'gemini-embedding-2').result);
Permite trabajar con BigQuery DataFrames.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames.
Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación.
Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Los resultados son similares a los siguientes:
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
| query.embedding | base.product_id | base.embedding | base.image.uri | base.image.version | base.image.authorizer | base.image.details | distance |
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
| -0.0112330541 | 181 | -0.0112330541 | gs://cloud-samples-data/bigquery/ | 12345678910 | myproject.region.myconnection | {"gcs_metadata":{"content_type": | 0.0 |
| 0.0142525584 | | 0.0142525584 | tutorials/cymbal-pets/images/ | | | "image/png","md5_hash":"21234567hst16555w60j", | |
| 0.0135886827 | | 0.0135886827 | cozy-naps-cat-scratching-post-with-condo.png | | | "size":828318,"updated":1742492688982000}} | |
| 0.0149955815 | | 0.0149955815 | | | | | |
| ... | | ... | | | | | |
| | | | | | | | |
| | | | | | | | |
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
| -0.0112330541 | 187 | -0.0190353896 | gs://cloud-samples-data/bigquery/ | 23456789101 | myproject.region.myconnection | {"gcs_metadata":{"content_type": | 0.4216330832.. |
| 0.0142525584 | | 0.0116206668 | tutorials/cymbal-pets/images/ | | | "image/png","md5_hash":"7328728fhakd9937djo4", | |
| 0.0135886827 | | 0.0136198215 | cozy-naps-cat-scratching-post-with-bed.png | | | "size":860113,"updated":1742492688774000}} | |
| 0.0149955815 | | 0.0173457414 | | | | | |
| ... | | ... | | | | | |
| | | | | | | | |
| | | | | | | | |
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
| ... | ... | ... | ... | ... | ... | ... | ... |
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
Procesa datos multimodales ordenados con arrays de valores de ObjectRef
En esta sección, se muestra cómo resumir manuales del usuario procesando datos multimodales ordenados con arrays de valores ObjectRef. BigQuery puede analizar varios archivos no estructurados de forma simultánea con arrays.
Completa las siguientes tareas:
Crea la tabla product_manuals de modo que contenga un archivo PDF para el manual del producto Crittercuisine Pro 5000 y archivos PDF para cada página de ese manual.
Crea una tabla que asigne el manual a sus fragmentos. El manual completo y las páginas del manual se almacenan en una columna ObjectRef.
Analiza un array de valores ObjectRef en conjunto para devolver un solo valor generado.
Analiza un array de valores de ObjectRef por separado y devuelve un valor generado para cada valor del array.
Para procesar datos multimodales ordenados con valores de ObjectRef, sigue estos pasos:
Para crear la tabla product_manuals, elige una de las siguientes opciones:
SQL
Pega lo siguiente en el editor de consultas y, luego, haz clic en
Ejecutar:
CREATE OR REPLACE EXTERNAL TABLE `cymbal_pets.product_manuals`
WITH CONNECTION `us.cymbal_conn`
OPTIONS (
object_metadata = 'SIMPLE',
uris = [
'gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/documents/*.pdf',
'gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/document_chunks/*.pdf']);
Recibirás un mensaje de confirmación similar al siguiente: This
statement created a new table named product_manuals.
Permite trabajar con BigQuery DataFrames.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames.
Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación.
Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Para escribir datos de PDF en la tabla map_manual_to_chunks, elige una de las siguientes opciones:
SQL
Pega lo siguiente en el editor de consultas y, luego, haz clic en
Ejecutar:
-- Extract the file and chunks into a single table.
-- Store the chunks in the chunks column as array of ObjectRefs (ordered by page number)
CREATE OR REPLACE TABLE cymbal_pets.map_manual_to_chunks
AS
SELECT ARRAY_AGG(m1.ref)[0] manual, ARRAY_AGG(m2.ref ORDER BY m2.ref.uri) chunks
FROM cymbal_pets.product_manuals m1
JOIN cymbal_pets.product_manuals m2
ON
REGEXP_EXTRACT(m1.uri, r'.*/([^.]*).[^/]+')
= REGEXP_EXTRACT(m2.uri, r'.*/([^.]*)_page[0-9]+.[^/]+')
GROUP BY m1.uri;
Recibirás un mensaje de confirmación similar al siguiente: This
statement created a new table named map_manual_to_chunks.
Permite trabajar con BigQuery DataFrames.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames.
Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación.
Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Para ver los datos del PDF en la tabla map_manual_to_chunks, elige una de las siguientes opciones:
SQL
Pega lo siguiente en el editor de consultas y, luego, haz clic en
Ejecutar:
SELECT *
FROM cymbal_pets.map_manual_to_chunks;
Permite trabajar con BigQuery DataFrames.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames.
Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación.
Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Los resultados son similares a los siguientes:
+-------------------------------------+--------------------------------+-----------------------------------+------------------------------------------------------+-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
| manual.uri | manual.version | manual.authorizer | manual.details | chunks.uri | chunks.version | chunks.authorizer | chunks.details |
+-------------------------------------+--------------------------------+-----------------------------------+------------------------------------------------------+-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
| gs://cloud-samples-data/bigquery/ | 1742492785900455 | myproject.region.myconnection | {"gcs_metadata":{"content_type":"application/pef", | gs://cloud-samples-data/bigquery/ | 1745875761227129 | myproject.region.myconnection | {"gcs_metadata":{"content_type":"application/pdf", |
| tutorials/cymbal-pets/documents/ | | | "md5_hash":"c9032b037693d15a33210d638c763d0e", | tutorials/cymbal-pets/documents/ | | | "md5_hash":"5a1116cce4978ec1b094d8e8b49a1d7c", |
| crittercuisine_5000_user_manual.pdf | | | "size":566105,"updated":1742492785941000}} | crittercuisine_5000_user_manual_page1.pdf | | | "size":504583,"updated":1745875761266000}} |
| | | | +-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
| | | | | crittercuisine_5000_user_manual_page1.pdf | 1745875760613874 | myproject.region.myconnection | {"gcs_metadata":{"content_type":"application/pdf", |
| | | | | tutorials/cymbal-pets/documents/ | | | "md5_hash":"94d03ec65d28b173bc87eac7e587b325", |
| | | | | crittercuisine_5000_user_manual_page2.pdf | | | "size":94622,"updated":1745875760649000}} |
| | | | +-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
| | | | | ... | ... | ... | ... |
+-------------------------------------+--------------------------------+-----------------------------------+------------------------------------------------------+-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+
Para generar una sola respuesta a partir de un modelo de Gemini basada en el análisis de un array de valores de ObjectRef, elige una de las siguientes opciones:
SQL
Pega lo siguiente en el editor de consultas y, luego, haz clic en
Ejecutar:
SELECT
AI.GENERATE((
'''Can you provide a page by page summary for the first 3 pages of the attached manual?
Only write one line for each page. The pages are provided in serial order''',
chunks),
endpoint => 'gemini-3.5-flash').result AS Response,
FROM cymbal_pets.map_manual_to_chunks;
Permite trabajar con BigQuery DataFrames.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames.
Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación.
Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Los resultados son similares a los siguientes:
+---------------------------------------------------------------------------+
| Response |
+---------------------------------------------------------------------------+
| Here is a one-line summary for each of the first 3 pages: |
| |
| Page 1 introduces the CritterCuisine Pro 5000 automatic pet feeder and |
| presents the initial part of the manual's Table of Contents. |
| Page 2 lists the items included with the feeder and details important |
| safety precautions for its use. |
| Page 3 describes the feeder's key features, provides assembly and initial |
| setup instructions, and begins the programming guide with clock setting. |
+---------------------------------------------------------------------------+
Para generar varias respuestas a partir de un modelo de Gemini basadas en el análisis de un array de valores de ObjectRef, elige una de las siguientes opciones:
SQL
Pega lo siguiente en el editor de consultas y, luego, haz clic en
Ejecutar:
WITH results AS (
SELECT
AI.GENERATE((
'''Can you provide a page by page summary for the first 3 pages of the attached manual?
Only write one line for each page. The pages are provided in serial order''',
chunks),
endpoint => 'gemini-3.5-flash',
output_schema => 'page1_summary STRING, page2_summary STRING, page3_summary STRING').*
FROM cymbal_pets.map_manual_to_chunks)
SELECT page1_summary, page2_summary, page3_summary
FROM results;
Permite trabajar con BigQuery DataFrames.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames.
Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación.
Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Los resultados son similares a los siguientes:
+-----------------------------------------------+-------------------------------------------+----------------------------------------------------+
| page1_summary | page2_summary | page3_summary |
+-----------------------------------------------+-------------------------------------------+----------------------------------------------------+
| This manual provides an overview of the | This section explains how to program | This page covers connecting the feeder to Wi-Fi |
| CritterCuisine Pro 5000 automatic pet feeder, | the feeder's clock, set feeding | using the CritterCuisine Connect app, remote |
| including its features, safety precautions, | schedules, copy and delete meal settings, | feeding, managing feeding schedules, viewing |
| assembly instructions, and initial setup. | manually feed your pet, record | feeding logs, receiving low food alerts, |
| | a voice message, and understand | updating firmware, creating multiple pet profiles, |
| | the low food level indicator. | sharing access with other users, and cleaning |
| | | and maintaining the feeder. |
+-----------------------------------------------+-------------------------------------------+----------------------------------------------------+
Realiza una limpieza
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
- En la Google Cloud consola, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.
Como alternativa, para conservar el proyecto y borrar los recursos que se usaron en este instructivo, sigue estos pasos:
Ve a la página de BigQuery.
En el panel izquierdo, expande tu proyecto y, luego, haz clic en Conjuntos de datos.
Para el conjunto de datos
bqml_tutorial, haz clic en Abrir acciones > Borrar.En el cuadro de diálogo Borrar conjunto de datos, haz clic en Borrar para confirmar.
En el panel izquierdo, haz clic en Conexiones.
Para la conexión
cymbal_conn, haz clic en Abrir acciones > Borrar.En el diálogo Borrar conexión, ingresa
deletey, luego, haz clic en Borrar para confirmar.
¿Qué sigue?
- Para obtener más información sobre cómo trabajar con datos multimodales, consulta Analiza datos multimodales en BigQuery.
- Para obtener más información sobre los valores de
ObjectRef, consulta Trabaja con valores de ObjectRef. - Para obtener información sobre cómo analizar datos multimodales con SQL y la función
OBJ.LIST, consulta Analiza datos multimodales con SQL.
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2026-09-18 (UTC)