R 中 arrow duckdb 工作流程的 SQL 查询

问题描述 投票:0回答:2

我想知道是否可以在 R 中的

duckdb
工作流程期间在
arrow
上发送 SQL 查询。 (https://duckdb.org/2021/12/03/duck-arrow.html)

我知道它的目的是使用

dplyr
动词,但有一些动词翻译不顺畅,这些代码适用于
dplyr
后端,但不适用于
duckdb
arrow

我想在通话期间使用直接

SQL
查询,如下例所示:

library(duckdb)
library(arrow)
library(dplyr)

# Open dataset using year,month folder partition
ds <- arrow::open_dataset("nyc-taxi", partitioning = c("year", "month"))

ds %>%
  # Pass off to DuckDB
  to_duckdb() |>
  SQL_QUERY("SELECT * LIMIT 100") |> # <- something like this
  collect()
sql r dplyr apache-arrow duckdb
2个回答
0
投票

既然你这样做了

dplyr
风格并且跳过了
SQL
风格

,那不是这样吗?
ds %>%
    to_duckdb() %>%
    head(100) %>%
    collect()

0
投票

根据您想要完成的任务,您可以使用带有

dplyr
动词的 SQL 查询片段:

ds |>
  to_duckdb() |>
  filter(sql("vendor_name = 'VTS' AND year = 2009 AND month = 1")) |>
  collect()

您可以在其中一个 dbplyr 插图中找到有关此方法的更多信息。

此方法不能扩展到更复杂的查询。但是,您可以使用

to_duckdb()
返回的信息通过 DBI 包发送完整的 SQL 查询:

db_tbl <-  ds |>
      to_duckdb(table_name = "nyc_tbl")

con <- db_tbl$src$con
dbGetQuery(con, "SELECT * FROM 'nyc_tbl' LIMIT 100")
© www.soinside.com 2019 - 2024. All rights reserved.