我想知道在R的arrow工作流程中是否可以发送一个关于duckdb的SQL查询.

我知道它的意图是使用dplyr个动词,但有一些动词翻译不流畅,代码在dplyr后端工作,但不是duckdbarrow.

我想在呼叫期间使用直接的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查询片段与这dplyr个谓词一起使用:

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

您可以在dbplyr vignettes种方法之一中找到有关此方法的更多信息.

这种方法不适用于更复杂的查询.但是,您可以使用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")

Sql相关问答推荐

如何在一个范围内进行分组.""范围值在范围表中定义

PostgreSQL:如果发现多行具有相似列值,则跳过 Select 行

SQL使最终结果显示两个表后的所有数据(匹配和不匹配)?

SQL将 Select 查询作为新列添加到另一个 Select 查询

明细表中没有记录如何更新主表的值为0

在Athena中使用regexp提取括号前的字符串值

Select 最频繁的值以及分组依据

Snowflake 中的分层数据

SAS proc freq 或 proc sql 获取数据子集和整个数据的频率

Grafana SQL 模板变量(值、文本)

JSON_VALUE 不适用于提取的 json 中的嵌套路径

SQL Server - 复杂场景 - 比较状态并填充值到后续行

根据开始时间和结束时间计算has_impact字段

如何将特定值从 JSON 列中的一个字段移动到 PostgreSQL 中的另一个字段?

如何根据与 BigQuery 中另一个表的匹配更新一个表中的列?

在 postgresql 中保存带有时间戳的几何类型数据

如何筛选 GROUP BY 结果? HAVING 没有产生预期的结果

我需要遍历权重值表并确定每个权重是否有效

如何在 PL/SQL 中区分返回的 XML 值?

如何优化sql请求?