
Insights
Measured Opinions
The latest news, provocative views and some handy how-tos from the world of data, analytics, cloud and AI.
Browse the archive
Explore a topic across our insights
234 results · Page 1 of 13

How to make an AI agent accurate in BigQuery
A year ago, I wrote about getting a BigQuery warehouse ready for AI ( Easy ways to prepare your BigQuery warehouse for AI) , but didn't look properly into Knowledge Catalog (known as Dataplex at the time). We decided to go back and look through Google's Knowledge Catalog properly: what's actually in there, how it works and what it relates to. What Knowledge Catalog is Knowledge Catalog is Google's metadata layer for BigQuery data (and a few other sources). It sits alongside your tables rather

What's actually in Google's Knowledge Catalog
Google's Knowledge Catalog has been renamed four times. Data Catalog, then Dataplex Catalog, then BigQuery universal catalog, then Dataplex Universal Catalog, and now Knowledge Catalog, as of 10 April 2026. The API, gcloud and IAM roles still all say "dataplex". If you land on a page that mentions Dataplex and wonder whether you're reading something out of date, you're probably not. That's just the product's fifth name in four years. I spent some time looking through the different sections of K

BigQuery Tips: When your query is technically correct but BigQuery won't run it
There is a particular kind of frustration that comes from staring at a query you know is correct and watching it fail. No syntax error. No logic problem. Just a wall. We hit two of them on the same project. What we were building The job was to migrate ga4_daily_snapshot for a large enterprise client from a BigQuery scheduled query into a proper Dataform pipeline. The scheduled query had been added to over time until it was too large to maintain with any confidence. Moving it to Dataform w

BigQuery Tips: The subquery in your WHERE clause that's scanning your entire table
There is a pattern that appears in a lot of BigQuery pipelines and looks completely reasonable. You have a control table that stores the latest processed date. Rather than hardcoding a date into your query, you pull it dynamically: SELECT * FROM `project.dataset.events` WHERE event_date = ( SELECT latest FROM `project.dataset.control_table` ); The query returns the right results. The logic is clean. And if your events table is large and date-partitioned, you might be scanning the entire

BigQuery Tips: Arrays in BigQuery - what they are and how to get data out of them
If you have ever opened a GA4 export in BigQuery for the first time and found yourself looking at a column called event_params that seemed to contain an entire table inside each row, this post is for you. Arrays are not trying to make your life harder. Once you understand why they exist and what to do with them, they stop being intimidating. Why BigQuery uses arrays GA4 tracks events. Each event can have many parameters. A purchase event might have a transaction ID, a value, a currency an

BigQuery Tips: How to put a spend cap on your BigQuery queries
At some point, most BigQuery users run a query they instantly regret. A missing WHERE clause on a table that turned out to be enormous. A JOIN that multiplied rows in a way nobody intended. A curiosity query on an unfamiliar dataset that scanned several terabytes before you could cancel it. By the time the query finishes you already know something went wrong. And you don't find out the cost until the billing report lands. There is a setting in BigQuery that sits between you writing a query a

BigQuery Tips: Why LAST_VALUE keeps returning the wrong result
Say you want to find the entry page and exit page for every session in your events table. The natural query writes itself: SELECT CONCAT(ga_session_id, '-', user_pseudo_id) AS session_key, event_timestamp, page_path, FIRST_VALUE(page_path) OVER ( PARTITION BY CONCAT(ga_session_id, '-', user_pseudo_id) ORDER BY event_timestamp ) AS entry_page, LAST_VALUE(page_path) OVER ( PARTITION BY CONCAT(ga_session_id, '-', user_pseudo_id) ORDER BY event_timestamp ) AS exit_pag

The problem with Agentic Analytics
An AI agent will answer any question about your data, confidently and often wrongly. Agentic analytics works only on a governed semantic layer. Here is why.

You can't buy data strength. You build it.
Google made data strength central at GML 2026 and now measures it in Google Ads. But it is not a setting you switch on. Here is what actually builds it.

Whose stack is it anyway?
Google's running two in parallel - Marketing and Cloud. You'll likely still be using both for the next few years. So here's how to work with them and make them your own. Three Google announcement events recently - Cloud Next in April, I/O on May 19-20, Google Marketing Live on May 20. The Marketing Live keynote actually overlapped with the second day of I/O, which struck me as not accidental - Gemini is running under all of it. And, in doing so, rebuilding your measurement stack. What Google

Siloed data, central intelligence
Someone in your organisation has already connected an AI agent to a live data source. Probably several people have. They've pointed Claude at HubSpot, asked it to pull numbers from Google Analytics, had it read a Jira board or reconcile figures across two systems. The data never moved. Nobody waited for a pipeline. Nobody asked the data team. They did this because it was easy. And people will always go where the friction is least. This is happening everywhere, across every function, in organis

What we learned building AI agents for clients (and ourselves)
From internal experiments to client-facing data products Eighteen months ago, we started building AI agents internally. Not as a product play - as a way to stop doing repetitive work. Documentation, QA checklists, data validation. The kind of tasks that every analytics consultancy does hundreds of times a year and nobody enjoys. That experiment became our first internal AI assistant. And what we learned building it changed how we think about data products for clients. Here's what we know now

What is a semantic layer and why your AI agents need one
Companion piece to Measure Pod #139 with Colin Zima and #98 with David Jayatillake Your warehouse is full of tables. Your agents can query them. The question is whether they'll get the same answer. Ask three different agents "what's our monthly revenue?" and you'll get three different numbers. Not because the data is wrong - because nobody defined what "revenue" means in a way machines can consistently resolve. Is it gross or net? Recognised or invoiced? Including refunds or not? Each agent ma

The derelict data warehouse, revisited: why this problem just became existential
AI doesn't fix bad data; it scales it. In 2026, a derelict data warehouse isn't just a nuisance, it’s an existential risk.

Your analytics stack is dying. Here's what's going to replace it
The monolithic martech stack is collapsing. An open source, warehouse-first intelligence platform is cheaper, more honest, and actually yours.

What 70% more data actually means for your ad performance
Server-side GTM is usually sold on technical grounds. Better data quality. Reduced client-side load. Privacy compliance. All true, all important, and all completely abstract to the person signing off the budget. Here's what they actually want to know: what does it do for my numbers? We can answer that. When we deployed server-side GTM for Unily, they recovered 70% of previously lost session data. That's not a rounding error. That's a step change in what you can see, what you can attribute, and

We've stopped patching. And started building.
Measurelab has a new website. It reflects a shift toward building intelligence platforms, not just solving technical problems. Here's what's changed.

Clearing 2026: why UK universities need recruitment intelligence
UK universities face a deficit crisis. Student Recruitment Intelligence can transform Clearing from chaos to precision.


