ddbs_compute: Force computation of a lazy duckspatial_df

View source: R/duckspatial_df_sf_methods.R

ddbs_computeR Documentation

Force computation of a lazy duckspatial_df

Description

Executes the accumulated query and stores the result in a DuckDB temporary table. The result remains lazy (a duckspatial_df) but points to the materialized data, avoiding repeated computation of complex query plans.

Usage

ddbs_compute(x, ..., name = NULL, temporary = TRUE)

Arguments

x

A duckspatial_df object

...

Additional arguments passed to dplyr::compute

name

Optional name for the result table. If NULL, a unique temporary name is generated.

temporary

If TRUE (default), creates a temporary table that is automatically cleaned up when the connection closes.

Details

This is useful when you want to:

  • Cache intermediate results for reuse across multiple subsequent operations

  • Simplify complex query plans before heavy operations like spatial joins

  • Force execution at a specific point without pulling data into R memory

Value

A new duckspatial_df pointing to the materialized table

Examples

## Not run: 
library(duckspatial)
library(dplyr)

# Load lazy spatial data
countries <- ddbs_open_dataset(
  system.file("spatial/countries.geojson", package = "duckspatial")
)

# Complex pipeline - ddbs_compute() caches intermediate result
cached <- countries |>
  filter(CNTR_ID %in% c("DE", "FR", "IT")) |>
  ddbs_compute()  # Execute and store in temp table

# Check query plan - should reference temp table
show_query(cached)

# Further operations continue from cached result
result <- cached |>
  ddbs_filter(other_layer, predicate = "intersects") |>
  st_as_sf()

## End(Not run)

duckspatial documentation built on June 22, 2026, 9:08 a.m.