最近很喜歡使用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