BigQuery Object Tables: A Practical Introduction

Senior Data Engineer • Contractor / Freelancer • GCP & AWS Certified
Search for a command to run...

Senior Data Engineer • Contractor / Freelancer • GCP & AWS Certified
No comments yet. Be the first to comment.
Short, practical posts on SQL and BigQuery — from core language features to advanced query patterns. A reference for data practitioners at every level.
Ever run a heavy BigQuery SQL query, processed gigabytes of data — and then accidentally closed the tab or forgot to save the results? 😬 Don't re-run it. Your results are still there. BigQuery automa
Here's a useful Dataform concept: pre_operations and post_operations. As the name implies, these represent a set of actions that run before and after the main operation (table, view, or SQL operations

Query your data lake with warehouse-grade security and performance — without moving a single file.

Ever run a heavy BigQuery SQL query, processed gigabytes of data — and then accidentally closed the tab or forgot to save the results? 😬 Don't re-run it. Your results are still there. BigQuery automa

You can use query parameters in BigQuery hashtag#SQL (now in the console as well!) — but how are they different from variables, and when should you use each? Both parameters and variables act as place

BigQuery has always been a SQL engine for tabular data. Object tables add an interesting twist to that.
Instead of rows containing values, an object table gives you one row per file — pointing at data stored in Cloud Storage: images, PDFs, audio, video, or JSON.
Each row includes:
→ the GCS URI
→ file metadata (size, content type, updated timestamp)
→ a hidden data column that can be passed directly into ML functions
That last part is especially important. You can feed that data straight into ML.GENERATE_TEXT or AI.GENERATE_EMBEDDING — meaning you can run inference on unstructured data directly with BigQuery SQL .
BigQuery is no longer just querying tables. It’s increasingly becoming an execution layer over files and AI models too.
Let's now walk through a practical example.
First, we're going to start with a Google Cloud Storage bucket.
These are images of animals sourced Open Access Animals collection.
Next, just like in the BigLake tutorial we'd need a BigQuery connection created with its service account being granted both storage.objectViewer on the bucket and Vertex AI User on the project.
We can now create the object table:
Here are the fields exposed:
We can now create the model that we will be passing these images to.
We're going to use ML.GENERATE_TEXT function, providing the object table to the model we've previously created to identify what animal is depicted on each image.
As you can see, the model correctly identified each of the animals.
The animal detection example might look simple, but it opens new possibilites. Product image classification, PDF extraction, audio transcription would have the same approach. If your data lives in GCS and your questions can be expressed as a prompt, BigQuery can now answer them.
Thanks for reading and stay tuned for more content like this.