Rmarkdown/knitr on Redshift中的SQL块是否支持内部联接和公共表表达式?

Rmarkdown/knitr on Redshift中的SQL块是否支持内部联接和公共表表达式?,r,inner-join,knitr,r-markdown,common-table-expression,R,Inner Join,Knitr,R Markdown,Common Table Expression,最近非常喜欢使用Rmarkdown/Knitr执行SQL块,但是似乎对更复杂的查询有限制。我一直在使用RJDBC供电连接的红移数据库 特别是使用具有内部联接的公共表表达式: 我已成功地在单个查询中使用了CTE和内部联接,但将它们组合在一起会导致错误: Error in .verify.JDBC.result(r, "Unable to retrieve JDBC results set for ", : Unable to retrieve JDBC result set for WITH

最近非常喜欢使用Rmarkdown/Knitr执行SQL块,但是似乎对更复杂的查询有限制。我一直在使用RJDBC供电连接的红移数据库

特别是使用具有内部联接的公共表表达式:

我已成功地在单个查询中使用了CTE和内部联接,但将它们组合在一起会导致错误:

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会话之外的查询中,这似乎被错误地翻译/复制

这是已知的限制吗?如果有,是否在任何地方记录

这是已知的bug吗?如果是,它是否存在于现有问题中


编辑:这只在knit过程中发生,单独以交互方式运行块会返回预期结果。

我建议在Redshift JDBC驱动程序上尝试另一个版本


我得到了同样的错误,但是,这是当使用Pentaho,所以里程可能会有所不同。我没有找到任何与此相关的文档或其他信息。我的问题通过切换最新的驱动程序版本得到了解决。我使用的是RedshiftJDBC4-1.2.1.1001.jar JDBC4.0兼容版,并切换到RedshiftJDBC4-1.1.10.1010.jar。

确认使用4.0和RedshiftJDBC4-1.1.10.1010.jar,这两个版本在最初使用RedshiftJDBC42-1.1.17.1017.jar在4.2上运行时修复了这个问题,并且在使用RedshiftJDBC42-1.2.1001.jar进行测试时失败。想知道这是否是最新jar中的一个突破性错误,或者我这边是否有什么东西导致了错误。使用同样失败的RedshiftJDBC42-1.1.17.1017.jar进行测试。无法重拨上述内容,这意味着使用同样失败的RedshiftJDBC4-1.1.17.1017.jar进行测试。
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