Skip to content

本页尚未翻译

本页内容仍为英文原文,源自官方文档 feature-engineering/refresh-materialized-view。中文翻译正在分批进行中。

Refresh a materialized view ​

Bring a materialized view up to date after its source data changes.

Applies to: Embedded ❌, Enterprise ✅

Refresh a materialized view to bring its stored rows up to date after the source table changes.

说明

In SQL this is REFRESH MATERIALIZED VIEW.

Refresh a view ​

python
view.refresh()

In LanceDB Embedded, every refresh rebuilds the view completely from its source query -- there is no incremental refresh there. Calling it again with no source changes still rebuilds and commits a new table version. In LanceDB Enterprise, the server chooses the refresh mode instead; pass full=True to force a full rebuild there too.

In LanceDB Embedded, the result reports what the refresh did:

python
result = view.refresh()
result.rows_written  # rows in the rebuilt view
result.source_version  # the source table version the view now reflects
result.version  # the view's own new table version

LanceDB Enterprise refreshes run through its SQL job adapter, which doesn't expose these metrics: mode, rows_written and source_version are all None on an Enterprise result, even though the refresh itself ran.

Pass source_version=N to refresh against a particular source version instead of the latest. This is a LanceDB Embedded capability only -- LanceDB Enterprise's SQL refresh does not support pinning a source version:

python
view.refresh(source_version=12)  # LanceDB Embedded only

Use view.table.count_rows() for the view's row count at any time; on LanceDB Embedded it always matches rows_written from the most recent refresh.

Automatic refresh ​

A materialized view can refresh itself on a schedule instead of waiting for an explicit refresh() call. See Auto Refresh for enabling it at creation, the SQL and SDK forms for changing the setting afterward, and how it differs from a computed column's per-output granularity.

When a refresh fails ​

A refresh replaces the view's stored rows in one commit, so a failure leaves the view as it was after its last successful refresh. Fix the cause and refresh again.

Create a materialized viewDefine the query a view stores.Refresh a computed columnThe same idea, for a single derived column.Auto RefreshRefresh on a schedule instead of calling this yourself.