外观
本页尚未翻译
本页内容仍为英文原文,源自官方文档 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 versionLanceDB 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 onlyUse 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.