最近很喜欢使用Rmarkdown/Knitr执行SQL块,但它似乎对更复杂的查询有限制。我一直在使用带有RJDBC供电连接的Redshift数据库。Redshift中的Rmarkdown/knitr中的SQL块是否支持INNER JOIN和Common Table Expressions?
具体使用公共表表达式与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会话时,这个错误被翻译/重复。
这是一个已知的限制吗?如果是这样,它记录在任何地方?
这是一个已知的错误吗?如果是的话,它在现有的问题?
编辑:这只是明显发生在针织过程中,单独运行大块交互式返回预期结果。
确认使用4.0和'RedshiftJDBC4-1.1.10.1010.jar'修复了这个问题,当它最初在4.2上运行'RedshiftJDBC42-1.1.17.1017.jar'并且在使用'RedshiftJDBC42-1.2.1001.jar'测试时失败。有趣的是,要知道这是在最近的罐子里是一个突破的错误,还是在我的身边有某些东西导致了错误。用'RedshiftJDBC42-1.1.17.1017.jar'测试过,也失败了。 – DaveRGP
不能重述上述,它的意思是说“用'RedshiftJDBC4-1.1.17.1017.jar'测试也失败了。 – DaveRGP