Looker dashboard failed to load with error "query execution timed out" how to fix
Fixes a Looker dashboard that fails with a query execution timeout by trimming the explore, adding filters and checking the warehouse. Use when tiles spin and then time out on load. Not for a Looker login or permission failure with no timeout.
TL;DR
Open the failing tile in the explore, cut the row limit and date range, and re-run to prove the query itself is the bottleneck before changing anything else. Add a required filter or an aggregate table for the heavy measure, clear the tile cache, and only then raise timeouts if the warehouse is genuinely slow. Most timeouts clear once the scan is bounded and the PDT or aggregate awareness path is used.
query execution timed outUse this when
- A Looker dashboard loads slowly and one or more tiles end with a timeout message.
- The same explore runs fine with a short date range but fails on the default range.
- System Activity shows long runtimes or large scanned rows for the dashboard queries.
Not for this skill when
- The dashboard fails instantly with a LookML or field error instead of a timeout. Use the validation skill for that case.
- All Looker pages are down for every user. Treat that as an instance or connection outage first.
Steps
- Open the dashboard, note which tiles time out, then open one failing tile in its explore and run it with a 7 day range and a 500 row limit to isolate the query. Verify: the trimmed query returns rows instead of timing out
- Read the generated SQL in SQL Runner and look for a missing date filter, a fanout join across a one-to-many relationship, and a sort on an unindexed text field. Verify: you can name the clause that drives the large scan
- Add a required dashboard filter or a sqlalwayswhere condition on the explore so the tile cannot run unbounded, and retest with the original dashboard range. Verify: the tile completes inside the dashboard timeout window
- If the measure is a repeated rollup, build an aggregate table or a PDT for it and point the explore at that table with aggregate awareness. Verify: the query log shows the aggregate table name instead of the raw fact table
- Clear the dashboard cache from the admin caching controls and reload the full dashboard as a viewer, not as an editor. Verify: every tile renders and the slowest tile finishes well under the limit
- Check the warehouse side for queued or throttled statements during the same window, and resize or schedule the load if the database was the constraint. Verify: a repeat load at peak time completes without queue delay
Why it happens
Looker generates SQL at view time, so dashboard performance is warehouse performance. Timeouts usually come from an unbounded date range, a symmetric aggregate forced to scan a fanned-out join, or a PDT that stopped rebuilding so every tile falls back to raw tables. Raising the timeout only hides the scan cost and makes the next viewer wait longer. Bounding the query and pre-aggregating the rollup removes the work instead of tolerating it.
In Looker the dashboard itself holds no data. Every tile runs a generated SQL statement against the connection when the dashboard loads, unless a cached result or a PDT can serve it. A single unbounded tile can therefore block the whole page, and the browser shows the timeout on the dashboard even though the slow part is one explore query. Check the System Activity explore and the SQL Runner history to see the exact statement and its runtime before guessing.
Variants and edge cases
Looker tile query timed out on load
The single-tile phrasing users search when only one visual fails.
Looker dashboard slow explore timeout fix
The symptom-first phrasing that pairs slowness with the timeout.
Looker query execution timed out aggregate table
The fix-focused variant once a PDT or aggregate table is suspected.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_nUAnWYggjGsk4w2DHB5pHw