Analyze multimodal data with SQL and BigQuery DataFrames
This tutorial shows you how to analyze multimodal data by using SQL queries and BigQuery DataFrames.
This tutorial uses the product catalog from the public Cymbal pet store dataset.
Objectives
- Use
ObjectRefvalues to store image data alongside structured data in a BigQuery standard table. - Enrich your data with image descriptions, keywords, and animal types, and
subcategories by using the
AI.GENERATEfunction. - Generate embeddings based on image data by using the
AI.EMBEDfunction. - Find similar images by using the
VECTOR_SEARCHfunction. - Summarize user manuals by processing ordered multimodal data using arrays
of
ObjectRefvalues.
Costs
In this document, you use the following billable components of Cloud de Confiance by S3NS:
- BigQuery: you incur costs for the data that you process in BigQuery.
- Cloud Storage: you incur costs for the objects stored in Cloud Storage.
- Gemini Enterprise Agent Platform: you incur costs for calls to Agent Platform models.
For more information about, see the following pricing pages:
Before you begin
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
-
Enable the BigQuery, BigQuery Connection, Cloud Storage, and Agent Platform API APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Required roles
To get the permissions that you need to complete this tutorial, ask your administrator to grant you the following IAM roles:
-
Create a connection:
BigQuery Connection Admin (
roles/bigquery.connectionAdmin) -
Grant permissions to the connection's service account:
Project IAM Admin (
roles/resourcemanager.projectIamAdmin) -
Create a Cloud Storage bucket:
Storage Admin (
roles/storage.admin) -
Create datasets, models, UDFs, and tables, and run BigQuery jobs:
BigQuery Admin (
roles/bigquery.admin) -
Create URLs that let you read and modify Cloud Storage objects:
BigQuery ObjectRef Admin (
roles/bigquery.objectRefAdmin)
For more information about granting roles, see Manage access to projects, folders, and organizations.
You might also be able to get the required permissions through custom roles or other predefined roles.
Set up
In this section, you create the dataset, connection, tables, and models used in this tutorial.
Create a dataset
Create a BigQuery dataset to contain the objects you create in this tutorial:
In the Cloud de Confiance console, go to the BigQuery page.
In the left pane, click Explorer:

If you don't see the left pane, click Expand left pane to open the pane.
In the Explorer pane, select your project.
Click View actions, and then click Create dataset. The Create dataset pane opens.
For Dataset ID, type
cymbal_pets.Click Create dataset.
Create a connection
Create a Cloud resource connection and get the connection's service account. BigQuery uses the connection to access objects in Cloud Storage:
Go to the BigQuery page.
In the left pane, click Explorer:

In the Explorer pane, click Add data.
The Add data dialog opens.
In the Filter By pane, in the Data Source Type section, select Business Applications.
Alternatively, in the Search for data sources field, you can enter
Vertex AI.In the Featured data sources section, click Vertex AI.
Click the Vertex AI Models: BigQuery Federation solution card.
In the Connection type list, select Vertex AI remote models, remote functions, BigLake and Spanner (Cloud Resource).
In the Connection ID field, type
cymbal_conn.Click Create connection.
Click Go to connection.
In the Connection info pane, copy the service account ID for use in a following step.
Grant permissions to the connection's service account
Grant the connection's service account the appropriate roles to access other
services. You must grant these roles in the same project you created or
selected in the Before you begin section. Granting the
roles in a different project results in the error bqcx-1234567890-xxxx@gcp-sa-bigquery-condel.s3ns.iam.gserviceaccount.com
does not have the permission to access resource.
Create a bucket
Create a Cloud Storage bucket for storing transformed objects:
Go to the Buckets page.
Click Create.
On the Create a bucket page, in the Get started section, enter a globally unique name that meets the bucket name requirements.
Click Create.
Grant permissions on the Cloud Storage bucket
Give the service account access to use objects in the bucket you created:
Go to the Buckets page.
Click the name of the bucket you created.
Click Permissions.
Click Grant access. The Grant access dialog opens.
In the New principals field, enter the service account ID that you copied earlier.
In the Select a role field, choose Cloud Storage, and then select Storage Object User.
Click Save.
Grant permissions on to use Agent Platform models
Give the service account access to use Agent Platform models:
Go to the IAM & Admin page.
Click Grant access. The Grant access dialog opens.
In the New principals field, enter the service account ID that you copied earlier.
In the Select a role field, enter Agent Platform User.
Click Save.
Create the tables of example data
Create tables to store the Cymbal pets product information.
Create the products table
Create a standard table that contains the Cymbal pets product information:
In the Cloud de Confiance console, go to the BigQuery page.
Run the following to create the
productstable:SQL
LOAD DATA OVERWRITE cymbal_pets.products FROM FILES( format = 'avro', uris = [ 'gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/tables/products/products_*.avro']);
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.
Create the product_images table
Create an object table that contains the Cymbal pets product images:
Run the following to create the
product_imagestable:SQL
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);
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.
Create models
The SQL instructions in this tutorial show how to call AI functions that don't require you to create a model. If you're following the BigQuery DataFrames instructions, select that option to create remote models that represent a Gemini model and a multimodal embedding model.
SQL
You can skip this step.
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.
Create a products_mm table with multimodal data
Create a products_mm table that contains an image column populated with
product images from the product_images object table. The image column
that is created is a STRUCT column that uses the ObjectRef format.
Run the following to create the
products_mmtable and populate theimagecolumn:SQL
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;
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.
Run the following to view the
imagecolumn data:SQL
SELECT product_name, image FROM cymbal_pets.products_mm
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.
The results look similar to the following:
+--------------------------------+--------------------------------------+-----------------------------------------------+------------------------------------------------+ | 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}} | +--------------------------------+--------------------------------------+-----------------------------------------------+------------------------------------------------+ | ... | ... | ... | | ... | +--------------------------------+--------------------------------------+-----------------------------------------------+------------------------------------------------+
Generate product information
Use the AI.GENERATE function to generate the following data for the pet store
products:
- Add an
image_descriptioncolumn to theproducts_mmtable. - Populate the
animal_type,search_keywords, andsubcategorycolumns of theproducts_mmtable. - Run a query that returns a description of each product brand and also a count of the number of products from that brand. The brand description is generated by analyzing product information for all of the products from that brand, including product images.
Run the following to create and populate the
image_descriptioncolumn:SQL
CREATE OR REPLACE TABLE cymbal_pets.products_mm AS ( SELECT *, AI.GENERATE(('Describe the following image: ', image), endpoint => 'gemini-2.5-pro').result AS image_description FROM cymbal_pets.products_mm );
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.
Run the following to update the
animal_type,search_keywords, andsubcategorycolumns with generated data:SQL
CREATE OR REPLACE TABLE cymbal_pets.products_mm AS ( SELECT * EXCEPT(animal_type, search_keywords, subcategory), 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, and 3) product subcategory. ', image, description), endpoint => 'gemini-2.5-pro', output_schema => 'animal_type STRING, search_keywords ARRAY
, subcategory STRING' ).* FROM cymbal_pets.products_mm);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.
Run the following to view the generated data:
SQL
SELECT product_name, image_description, animal_type, search_keywords, subcategory, FROM cymbal_pets.products_mm;
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.
The results look similar to the following:
+--------------------------------+-------------------------------------+-------------+------------------------+------------------+ | 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 | | +--------------------------------+-------------------------------------+-------------+------------------------+------------------+ | ... | ... | ... | ... | ... | +--------------------------------+-------------------------------------+-------------+------------------------+------------------+
Run the following to generate a description of each product brand and also a count of the number of products from that brand:
SQL
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;
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.
The results look similar to the following:
+--------------+-------------------------------------+-----+ | 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.. | | +--------------+-------------------------------------+-----+ | ... | ... |... | +--------------+-------------------------------------+-----+
Generate embeddings and perform a vector search
Generate embeddings from image data, and then use the embeddings to return similar images by using vector search.
In a production scenario, we recommend creating a vector index before running a vector search. A vector index lets you perform the vector search more quickly, with the trade-off of reducing recall and so returning more approximate results.
Run the following to create the
products_embeddingstable:SQL
CREATE OR REPLACE TABLE cymbal_pets.products_embedding AS ( SELECT product_id, AI.EMBED(image, endpoint => 'multimodalembedding@001').result AS embedding, image FROM cymbal_pets.products_mm );
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.
Run the following to run a vector search to return product images that are similar to the given input image:
SQL
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 => 'multimodalembedding@001').result);
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.
The results look similar to the following:
+-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+ | 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 | | | | | | | ... | | ... | | | | | | | | | | | | | | | | | | | | | | | | +-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+ | ... | ... | ... | ... | ... | ... | ... | ... | +-----------------+-----------------+----------------+----------------------------------------------+--------------------+-------------------------------+------------------------------------------------+----------------+
Process ordered multimodal data using arrays of ObjectRef values
This section shows you how to complete the following tasks:
- Create the
product_manualstable so that it contains both a PDF file for theCrittercuisine Pro 5000product manual, and PDF files for each page of that manual. - Create a table that maps the manual to its chunks. The complete manual and
the manual pages are each stored in an
ObjectRefcolumn. - Analyze an array of
ObjectRefvalues together to return a single generated value. - Analyze an array of
ObjectRefvalues separately and returning a generated value for each array value.
Follow these steps to process ordered multimodal data using ObjectRef values:
Go to the BigQuery page.
Run the following to create the
product_manualstable:SQL
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']);
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.
Run the following to write PDF data to the
map_manual_to_chunkstable:SQL
-- 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;
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.
Run the following to view the PDF data in the
map_manual_to_chunkstable:SQL
SELECT * FROM cymbal_pets.map_manual_to_chunks;
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.
The results look similar to the following:
+-------------------------------------+--------------------------------+-----------------------------------+------------------------------------------------------+-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+ | 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}} | | | | | +-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+ | | | | | ... | ... | ... | ... | +-------------------------------------+--------------------------------+-----------------------------------+------------------------------------------------------+-------------------------------------------+---------------------------------+------------------------------------+-------------------------------------------------------+Run the following to generate a single response from a Gemini model based on the analysis of an array of
ObjectRefvalues:SQL
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-2.5-pro').result AS Response, FROM cymbal_pets.map_manual_to_chunks
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.
The results look similar to the following:
+---------------------------------------------------------------------------+ | 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. | +---------------------------------------------------------------------------+
Run the following to generate multiple responses from a Gemini model based on the analysis of an array of
ObjectRefvalues:SQL
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-2.5-pro' 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;
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.
The results look similar to the following:
+-----------------------------------------------+-------------------------------------------+----------------------------------------------------+ | 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. | +-----------------------------------------------+-------------------------------------------+----------------------------------------------------+
Clean up
- In the Cloud de Confiance console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.