A dashboard repeats the same heavy aggregation, and it needs to be faster and cheaper. What do you use?
Why B is the answer
BigQuery materialized views
Materialized views store precomputed results and BigQuery keeps them up to date.
In detail
- A materialized view precomputes the aggregation.
- BigQuery keeps the view up to date.
Use case
An illustrative scenario, not a real incident.
A dashboard reruns a daily sales aggregation all day. A materialized view stores the result, so most queries read that.
See it in different ways
flowchart LR A["Base tables"] --> B["Materialized view"] B --> C["BI Engine"] C --> D["Fast dashboard"]
stateDiagram-v2 [*] --> QueryPlan QueryPlan --> PartitionAndCluster: scans too much QueryPlan --> MaterializedView: repeated aggregation QueryPlan --> BiEngine: dashboards need sub-second PartitionAndCluster --> [*] MaterializedView --> [*] BiEngine --> [*]
sequenceDiagram participant P0 as Dashboard participant P1 as Materialized view participant P2 as Base table P0->>P1: Query P2-->>P1: Refresh P1-->>P0: Stored result
Key point: Materialized views precompute results.
Why the other options are wrong
- A. BigQuery external tables
- External tables are often slower.
- C. A Cloud Run cache service
- A custom cache adds a service to run.
- D. Bigtable replicas of the results
- Bigtable replicas are not meant for this.

