跳转至内容

这将执行必要的配置,以在 DuckDB 中创建一个由给定 Arrow 对象支持的(虚拟)表。 在调用 collect()compute() 或针对该表运行查询之前,不会复制或修改任何数据。

用法

to_duckdb(
  .data,
  con = arrow_duck_connection(),
  table_name = unique_arrow_tablename(),
  auto_disconnect = TRUE
)

参数

.data

用于 DuckDB 表的 Arrow 对象(例如 Dataset、Table)

con

要使用的 DuckDB 连接(默认将创建一个并将其存储在 options("arrow_duck_con") 中)

table_name

要在 DuckDB 中用于此对象的名称。 默认值是一个唯一的字符串 "arrow_" 后跟数字。

auto_disconnect

在删除(并进行垃圾回收)生成的 对象时,是否应自动清理该表? 默认值:TRUE

返回值

DuckDB 中新表的 tbl

详情

结果是一个与 dbplyr 兼容的对象,可以在 d(b)plyr 管道中使用。

如果 auto_disconnect = TRUE,则创建的 DuckDB 表将配置为在 tbl 对象被垃圾回收时取消注册。 如果您在使用完 DuckDB 中的额外表对象后不想保留它们,这将很有帮助。

示例

library(dplyr)

ds <- InMemoryDataset$create(mtcars)

ds %>%
  filter(mpg < 30) %>%
  group_by(cyl) %>%
  to_duckdb() %>%
  slice_min(disp)
#> # Source:   SQL [?? x 11]
#> # Database: DuckDB v1.1.3 [unknown@Linux 6.8.0-1017-azure:R 4.4.2/:memory:]
#> # Groups:   cyl
#>     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
#>   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1  27.3     4   79     66  4.08  1.94  18.9     1     1     4     1
#> 2  16.4     8  276.   180  3.07  4.07  17.4     0     0     3     3
#> 3  17.3     8  276.   180  3.07  3.73  17.6     0     0     3     3
#> 4  15.2     8  276.   180  3.07  3.78  18       0     0     3     3
#> 5  19.7     6  145    175  3.62  2.77  15.5     0     1     5     6