What Are Dremio Reflections?
Dremio Reflections are the materialized query acceleration technology at the heart of Dremio's sub-second BI performance. A Reflection is a pre-computed, optimized representation of all or part of an Apache Iceberg table or Virtual Dataset, stored as an Iceberg table in Dremio-managed storage. When a query arrives, Dremio's query optimizer considers all available Reflections and automatically routes the query to the most beneficial one — transparently, without any modification to the query or BI tool.
Reflections solve the fundamental tension in analytics between data freshness and query performance. Raw Iceberg data on object storage is always current, but scanning it for complex aggregations across billions of rows takes seconds to minutes. Pre-aggregated data answers those queries in milliseconds, but maintaining a separate summary table requires pipeline engineering. Reflections bridge this gap: Dremio automatically maintains the pre-computed materializations, automatically refreshes them when source data changes, and automatically routes queries to them.
Raw Reflections
Raw Reflections are pre-scanned, compacted, and optionally sorted copies of source Iceberg tables. They are beneficial for queries that scan large amounts of raw data — full-table reads, large range scans, and queries joining multiple large tables.
A Raw Reflection pre-reads source Parquet files, applies column projection (retaining only the columns included in the Reflection), applies optional sorting and partitioning for optimized access patterns, and stores the result as a compact Iceberg table in Dremio's Reflection store. When a query against the source table can be answered by the columns in the Raw Reflection, Dremio routes it to the Reflection — which may be 5–50x smaller than the original table due to column projection and compaction.

Aggregation Reflections
Aggregation Reflections pre-compute GROUP BY aggregations — sums, counts, averages, min/max — across specified dimension and measure columns. They are specifically designed for OLAP-style analytical queries: revenue by region by month, order counts by product category by day, customer activity metrics by segment.
An Aggregation Reflection stores the pre-computed grouped result as a compact Iceberg table. When a query arrives that requests aggregations matching (or derivable from) a Reflection's pre-computed groupings, Dremio routes it to the Reflection. A query for "revenue by region" can be answered by a Reflection that pre-computed "revenue by region by product" — Dremio re-aggregates the Reflection's product-level data to produce region-level totals, which is far faster than scanning the original row-level table.
Reflection Transparency and Autonomy
Two properties make Reflections uniquely powerful compared to traditional materialized views:
Query Transparency
Reflections are completely transparent to query writers. A BI analyst writing SELECT region, SUM(revenue) FROM sales GROUP BY region does not know or care whether Dremio routes this to a raw Iceberg scan or an Aggregation Reflection. The result is identical — only the latency differs (seconds vs. milliseconds). No query changes, no BI tool reconfiguration, no analyst training required.
Autonomous Reflections
Autonomous Reflections extend the concept further: Dremio analyzes historical query patterns and automatically creates, modifies, and drops Reflections to optimize for the actual query workload. Instead of requiring a data engineer to manually design and maintain Reflections, Autonomous Reflections continuously optimize the acceleration layer based on observed usage.

Reflection Refresh and Staleness
Reflections must be kept synchronized with their source Iceberg tables to remain useful. Dremio supports three refresh strategies:
- Full refresh: Recompute the entire Reflection from the current source snapshot. Accurate but expensive for large tables.
- Incremental refresh: Read only the new Iceberg snapshots since the last refresh and append or update the Reflection incrementally. Much more efficient for large tables with regular appends.
- Never refresh (manual): Used for static reference data that changes infrequently.
When a Reflection becomes stale (the source has been updated but the Reflection has not yet refreshed), Dremio can either serve queries from the stale Reflection (acceptable for BI dashboards with moderate staleness tolerance) or fall back to scanning raw source data (guaranteeing freshness at the cost of performance). This behavior is configurable per Reflection.
Summary
Dremio Reflections are the technology that makes the data lakehouse competitive with a proprietary cloud data warehouse for BI performance. By pre-computing optimized materializations of Iceberg data and transparently routing queries to them, Reflections deliver sub-second response times on petabyte-scale lakehouses without any sacrifice of data openness, engine flexibility, or query compatibility. For any organization running Dremio as their lakehouse query engine, Reflections are the first optimization lever to pull for improving dashboard performance.