2017-07-26 79 views
1

最近很喜歡使用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會話時,這個錯誤被翻譯/重複。

這是一個已知的限制嗎?如果是這樣,它記錄在任何地方?

這是一個已知的錯誤嗎?如果是的話,它在現有的問題?

編輯:這只是明顯發生在針織過程中,單獨運行大塊交互式返回預期結果。

回答

1

我建議在Redshift JDBC驅動程序上嘗試另一個版本。

我得到了同樣的錯誤,但是,它使用Pentaho時,因此里程可能會有所不同。我沒有找到任何與此相關的文檔或其他信息。我的問題通過切換離開最新的驅動程序版本得到解決。我使用RedshiftJDBC4-1.2.1.1001.jar(兼容JDBC 4.0)並切換到RedshiftJDBC4-1.1.10.1010.jar。

+0

確認使用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

+0

不能重述上述,它的意思是說「用'RedshiftJDBC4-1.1.17.1017.jar'測試也失敗了。 – DaveRGP