【发布时间】:2018-01-01 16:08:38
【问题描述】:
最近非常喜欢使用 Rmarkdown/Knitr 执行 SQL 块,但是对于更复杂的查询似乎存在限制。我一直在使用带有 RJDBC 驱动连接的 Redshift 数据库。
具体使用带有INNER JOIN的公用表表达式:
```{sql, connection=redshift, output.var="Field_count"}
WITH
cte AS (
SELECT DISTINCT field
FROM
table
WHERE date >= '2017-01-01'
)SELECT count(DISTINCT field)
FROM cte
INNER JOIN table_2 t2 ON t2.join_here = cte.join_here;
```
我已经在单个查询中成功使用了 CTE 和 INNER JOIN,但是将它们组合起来会导致错误:
Error in .verify.JDBC.result(r, "Unable to retrieve JDBC results set for ", : Unable to retrieve JDBC result set for WITH
cte AS (
SELECT DISTINCT field
FROM
table
WHERE date >= '2017-01-01'
)SELECT count(DISTINCT field)
FROM cte
INNER JOIN table_2 t2 ON t2.join_here = cte.join_here; ([Amazon] (500335) One query is expected: WITH
cte AS (
SELECT DISTINCT field
FROM
table
WHERE date >= '2017-01-01'
)SELECT count(DISTINCT field)
FROM cte
INNER JOIN table_2 t2 ON t2.join_here = cte.join_here;) Calls: <Anonymous> ... dbSendQuery -> dbSendQuery -> .local -> .verify.JDBC.reslt Execution Halted
似乎在从 RStudio 会话中查询时翻译错误/重复。
这是一个已知的限制吗?如果是,它是否记录在任何地方?
这是一个已知的错误吗?如果是这样,它是否存在于现有问题中?
编辑:这仅在 knit 过程中可见,单独运行的块以交互方式返回预期结果。
【问题讨论】:
标签: r inner-join knitr r-markdown common-table-expression