我正在尝试使用 物化 CTE 创建查询,但出现语法错误(在本例中使用 R,但我希望问题与 R 无关......)。
抛出错误的查询如下所示(非常接近文档中给出的示例)
WITH avg_cte AS MATERIALIZED (
SELECT carrier, MEAN(dep_delay) AS avg_dep_delay
FROM flights
GROUP BY carrier
)
SELECT * FROM avg_cte
带有 R 的 MWE 看起来像这样
cc <- DBI::dbConnect(duckdb::duckdb())
DBI::dbWriteTable(cc, "flights", nycflights13::flights)
q <- "WITH avg_cte AS MATERIALIZED (
SELECT carrier, MEAN(dep_delay) AS avg_dep_delay
FROM flights
GROUP BY carrier
)
SELECT * FROM avg_cte
"
DBI::dbGetQuery(cc, q)
#> Error: Parser Error: syntax error at or near "MATERIALIZED"
#> LINE 1: WITH avg_cte AS MATERIALIZED (
MATERIALIZE
关键字是0.9.0中新增的,但当前的R包仍然只有0.8.1-3。 “前沿”安装说明应该允许同时安装0.9.0。
install.packages('duckdb', repos=c('https://duckdb.r-universe.dev', 'https://cloud.r-project.org'))