跳到内容

这将执行必要的配置,以在 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

当生成的 Object 被删除(并被垃圾回收)时,是否应该自动清理该表?默认值: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 [5 x 11]
#> # Database: DuckDB v1.1.0 [unknown@Linux 6.5.0-1025-azure:R 4.4.1/: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  16.4     8  276.   180  3.07  4.07  17.4     0     0     3     3
#> 2  17.3     8  276.   180  3.07  3.73  17.6     0     0     3     3
#> 3  15.2     8  276.   180  3.07  3.78  18       0     0     3     3
#> 4  27.3     4   79     66  4.08  1.94  18.9     1     1     4     1
#> 5  19.7     6  145    175  3.62  2.77  15.5     0     1     5     6