这是一个适用于 dbplyr 的 SQL 后端,旨在充分利用 DuckDB 的能力。它主要遵循 PostgreSQL 的后端设计,但包含更多映射函数。
tbl_file()
是 dplyr::tbl()
的一个实验性变体,用于直接访问磁盘文件。它比 dplyr::tbl()
更安全,因为它没有误解请求的风险,并且支持带有特殊字符的路径。
tbl_function()
是 dplyr::tbl()
的一个实验性变体,用于从表生成函数创建延迟表,适用于读取非标准 CSV 文件或其他数据源。它比 dplyr::tbl()
更安全,因为它没有误解查询的风险。有关数据导入函数的详细信息,请参阅 https://duckdb.net.cn/docs/data/overview。
作为替代方案,可以使用 dplyr::tbl(src, dplyr::sql("SELECT ... FROM ..."))
进行自定义 SQL 查询。
tbl_query()
已弃用,请改用 tbl_function()
。
结合使用 simulate_duckdb()
和 lazy_frame()
,可以在不打开 DuckDB 连接的情况下查看模拟的 SQL。
用法
tbl_file(src, path, ..., cache = FALSE)
tbl_function(src, query, ..., cache = FALSE)
tbl_query(src, query, ...)
simulate_duckdb(...)
示例
if (FALSE) { # duckdb:::TEST_RE2 && rlang::is_installed("dbplyr")
library(dplyr, warn.conflicts = FALSE)
con <- DBI::dbConnect(duckdb(), path = ":memory:")
db <- copy_to(con, data.frame(a = 1:3, b = letters[2:4]))
db %>%
filter(a > 1) %>%
select(b)
path <- tempfile(fileext = ".csv")
write.csv(data.frame(a = 1:3, b = letters[2:4]))
db_csv <- tbl_file(con, path)
db_csv %>%
summarize(sum_a = sum(a))
db_csv_fun <- tbl_function(con, paste0("read_csv_auto('", path, "')"))
db_csv %>%
count()
DBI::dbDisconnect(con, shutdown = TRUE)
}