Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

If a Redshift Iceberg materialized view looks stale, first check whether anyone has explicitly refreshed it: Iceberg materialized views do not support automatic refresh. Then inspect refresh history on the cluster or workgroup that ran the operation. A refresh that failed, one that found the view already current, and one that succeeded by recomputing everything require different responses.

Confirm that the object is an Iceberg materialized view

Iceberg materialized views are Iceberg tables written to Amazon S3 or Amazon S3 Table Buckets and registered in AWS Glue. They are not conventional Redshift materialized views, so do not rely on conventional-MV monitoring to diagnose them.

  • Use SHOW TABLES to discover Iceberg materialized views.
  • If you access the view through an external schema, SVV_EXTERNAL_TABLES can list it.
  • STV_MV_INFO does not include Iceberg materialized views.

The documented supported environments are Redshift Serverless and provisioned clusters using RG instance types. RA3 and DC2 are not supported for this feature. If your environment is outside those supported options, verify that before treating a refresh problem as transient.

Follow this triage sequence

  1. Check whether a refresh was actually scheduled or issued

    Iceberg materialized views require an explicit REFRESH MATERIALIZED VIEW operation; they do not support autorefresh. If you expected a background refresh, the missing refresh explains the stale data. For this object type, follow the Iceberg-specific guidance rather than broader Redshift materialized-view wording about auto-refresh.

    Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  2. Inspect refresh history on the cluster that ran it

    Query SVL_MV_REFRESH_STATUS for recent runs, timestamps, and status. The view reports operations performed by the local cluster only. If multiple clusters or workgroups use the same Iceberg materialized view, check the history on each one before concluding no refresh occurred.

    SELECT mv_name, starttime, endtime, status
    FROM svl_mv_refresh_status
    WHERE mv_name = 'daily_revenue'
    ORDER BY starttime DESC
    LIMIT 10;
  3. Retry deliberately and capture the SQL error

    Run REFRESH MATERIALIZED VIEW <catalog-qualified-name>; and retain the returned error text. Do not append CASCADE or RESTRICT; those options are not supported for Iceberg materialized views. Compare the command result with its history record: a successful refresh may find the view already current, update it incrementally, or recompute it from scratch.

  4. Verify the required permissions and access

    The user or role issuing the refresh needs ALTER permission on the Iceberg materialized view. The IAM role recorded as the view’s definer needs SELECT permission on every source table. If the error points to catalog or storage access, check that the applicable AWS Glue catalog and S3 access configuration is still valid.

  5. Check for a refresh from another cluster or workgroup

    More than one Redshift cluster or workgroup can attempt to refresh the same view. AWS Glue Data Catalog optimistic concurrency control allows only one concurrent refresh to win. If another cluster refreshed first, this cluster’s operation may abort after checking whether the view is still stale. Treat that as a possible benign race, then compare the local histories and current data before retrying.

    Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  6. Check creation and session constraints

    All identifiers in the Iceberg materialized view definition must be lowercase. Creating or refreshing the view is unsupported when enable_case_sensitive_identifier is true; set it to false for the session before retrying. Source tables must use Iceberg format version 2 or lower and be in the same AWS Region and account as the view. Non-Iceberg source tables are not supported.

Read the refresh outcome correctly

Use the status in SVL_MV_REFRESH_STATUS together with the SQL result and run timing. The listed Iceberg outcomes include “MV was already updated,” successful recomputation from scratch, successful incremental update, and failure statuses. An already-current result is not a failed refresh; a successful recomputation is not an incremental update, even if the command itself succeeded.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Find out why a refresh recomputed the whole view

Incremental refresh is supported for definitions using SELECT ... FROM ... WHERE ... GROUP BY with COUNT and SUM, and for inner joins between Iceberg source tables. A construct that is allowed but not supported for incremental refresh can cause a full refresh instead.

Examples of constructs that prevent incremental refresh include:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • DISTINCT;
  • outer joins;
  • window functions or subqueries;
  • set operations;
  • grouping sets, ROLLUP, or CUBE;
  • aggregate functions other than COUNT and SUM, including distinct aggregates.

Two other conditions can force a later full recomputation: a source snapshot recorded at the previous refresh has expired, or an external engine or tool changed the materialized-view data. A full recomputation is therefore a distinct outcome from a failed refresh; examine the view definition and snapshot history before diagnosing it as a command failure.

Prevent snapshot expiration from turning the next refresh into a full one

Set source Iceberg table snapshot retention longer than the expected gap between refreshes. If the snapshot from the previous refresh is no longer available, Redshift cannot calculate the incremental delta and falls back to a full refresh. Include the longest realistic interval between scheduled or manually issued refreshes when setting retention.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.