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.
Arguments
- x
A
duckspatial_dfobject- ...
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
Examples
if (FALSE) { # \dontrun{
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()
} # }
