Skip to content

本页尚未翻译

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

REFRESH COLUMN ​

Fill computed outputs and select rows to recompute.

Applies to: Embedded ❌, Enterprise ✅

A LanceDB extension with no DataFusion equivalent. It is what makes feature engineering reachable from SQL: a column declared by DDL starts empty, and a refresh fills it.

sql
REFRESH COLUMN <column> ON [TABLE] <table>
  [WHERE <predicate>]
  [WITH (<option> = <value> [, ...])]
sql
REFRESH COLUMN doubled ON my_table
REFRESH COLUMN embedding ON documents WHERE created_at > '2026-01-01'

Without WHERE, a refresh fills unassigned rows and recomputes values whose inputs changed, leaving other current values alone. A retry after a failure can still repeat work that was not committed.

With WHERE, a refresh recomputes every matching live row, including rows that already have current values. Repeating a predicate can repeat the Function calls and their cost. To select only null outputs within a slice:

sql
REFRESH COLUMN embedding ON documents
  WHERE created_at > '2026-01-01' AND embedding IS NULL

This skips non-null outputs even if their inputs changed. It also selects outputs that were successfully computed as NULL. Use an unfiltered refresh to let LanceDB track which outputs need updating.

Options ​

OptionMeaning
num_workersfixed worker count for SQL-expression columns; rejected for registered Function columns
cpu_millisaggregate CPU ceiling across the refresh's Function workers, in thousandths of a CPU
memory_bytesaggregate memory ceiling across the refresh's Function workers, in bytes
gpu_countaggregate GPU budget across the refresh's workers. Function columns only
gpu_classGPU class name for the refresh's workers. Function columns only
batch_sizemaximum rows passed to one Function call; actual calls can be smaller. Function columns only
max_executor_processes_per_workercap on executor processes per worker. Function columns only
row_timeout_secondsdeadline for one Function call. Function columns only
error_policy'fail' (default) stops on a row error; 'skip' writes null outputs and records row errors, subject to failure limits. Function columns only
max_failed_fractionfail the job once more than this share of rows has failed. Function columns only
max_failed_rowsfail the job once more than this many rows has failed. Function columns only
sql
REFRESH COLUMN embedding ON documents
  WITH (cpu_millis = 8000, memory_bytes = 17179869184, gpu_count = 2)

The example allows up to 8 CPUs, 16 GiB of memory, and 2 GPUs across the Function workers together. It does not reserve those resources per worker or guarantee a worker count. When setting CPU or memory, provide all three budget fields. A complete CPU-only budget uses gpu_count = 0.

Set error_policy on the refresh, not on the Function definition. With skip, inspect failures with SHOW ERRORS or table.function_errors() and retry the affected rows after fixing the cause. Initialization, infrastructure, and publication failures can still fail the job.

说明

num_workers is refused for a column filled by a registered function, which sizes its own workers from the CPU, memory and GPU options instead. error_policy (and the Function-only options above it in the table) is the reverse: it's refused for a plain SQL-expression column, which has no per-row failures to skip -- it's accepted only for a Function column.

Watching a refresh ​

A refresh submits work that outlives the call. Track it with SHOW JOBS, and diagnose failures with SHOW ERRORS. For per-split progress, worker fleet detail, and a DESCRIBE JOB example, see Watching a refresh.

See also ​

Refresh a computed columnThe same operation from the SDKs, and what a refresh guarantees.TableDeclaring the columns this fills.REFRESH MATERIALIZED VIEWBringing a view's stored result up to date, instead of a column.