Spinning charts and quota errors
Looker Studio was free, it connected to Google Analytics, Google Ads and your Sheets in minutes, and the first report was lovely. Now the report has grown. Pages take ages to load, some charts show an error until you refresh, and a connector to a social ads platform keeps hitting its limits.
Worse, filters sometimes produce totals that do not add up to the unfiltered figure, and nobody can explain why.
Why Looker Studio gets slow
Looker Studio is a presentation tool. It does very little storing or preparing of data itself, so every chart sends queries back to the source each time someone opens the page or changes a filter.
| Setup | Why it hurts |
|---|---|
| Google Sheets as the main source | Sheets is not built for repeated querying of large ranges |
| Blended data sources | Joins happen in the browser session, slowly, with limited join types |
| Third-party connectors | Each chart can call an external API, which is rate limited |
| Calculated fields on raw data | Every calculation reruns on every view |
| Many charts per page | Each chart is its own query |
Blending also explains the odd totals. Blends behave like joins with rules that are easy to get wrong, so records drop out or double up depending on filters.
The cost of a slow report
People stop opening it, or open it and give up. Marketing teams paying for connector subscriptions still end up exporting to Sheets. Clients or directors who see a report full of error boxes lose confidence in it. And the numbers that do load may be inconsistent between pages.
Agencies feel this most. A client report that shows a broken chart during a review meeting does more damage than having no chart at all, and the account manager ends up screenshotting pages in advance just to be safe.
There is also a ceiling on what you can ask. Questions that need more than a couple of sources joined together are simply too slow to attempt, so the report stays shallow even when the data to go deeper exists.
How we speed it up and fix the numbers
- We review each report: sources, blends, calculated fields and which pages people actually use.
- We load the data into BigQuery, which pairs naturally with Looker Studio, or into another database if that suits you better. Google Ads and GA4 have native exports to BigQuery; for other platforms we use scheduled API pulls.
- We move the joins and calculations out of blends and calculated fields into prepared tables, so each chart reads a ready-made result.
- We build summary tables at the grain each report needs, such as daily by campaign, rather than querying raw event data every time.
- We point the existing Looker Studio reports at the new tables, keeping your layouts, and check the figures against the old version.
- Scheduled checks confirm each load completed, and a named person is alerted if a platform API stops returning data.
BigQuery has usage-based pricing. We design the tables so reports query small summaries rather than scanning raw data, which keeps that cost modest and predictable, and we explain the trade-off before you commit.
Reports that open without waiting
Pages load promptly because they read prepared tables. Filters give totals that add up. The marketing platforms are called once per scheduled load rather than every time someone opens a chart, so rate limits stop being a problem.
The same tables can feed more than one report. Client reports, the internal marketing dashboard and the finance view of ad spend all read from one prepared source, so they agree with each other, which is rarely true when each report blends its own connectors.
You also end up with the underlying data in your own database, which you can use for other analysis or other tools later.
Recognise your report here?
- Pages take a long time to load or show chart errors
- Google Sheets is a main data source
- The report relies on blended data sources
- Paid connectors keep hitting limits
- Filtered totals do not match unfiltered ones