Sql 扩展dplyr和内部函数的使用
我正在开发Sql 扩展dplyr和内部函数的使用,sql,r,dplyr,r-s3,Sql,R,Dplyr,R S3,我正在开发RSQLServer包的分支,并试图实现连接。在当前版本的包中,使用sql\u join.DBIConnection实现任何与DBI连接的数据库的连接。然而,这种实现在SQLServer上并不适用。例如,它使用SQL server不支持的USING 我已经有了这个函数的一个版本sql\u join.SQLServerConnection正在运行(虽然还没有完成)。我的函数尽可能基于sql\u join.DBIConnection。我遇到的一个问题是,sql\u join.DBIConn
RSQLServer
包的分支,并试图实现连接。在当前版本的包中,使用sql\u join.DBIConnection
实现任何与DBI连接的数据库的连接。然而,这种实现在SQLServer上并不适用。例如,它使用SQL server不支持的USING
我已经有了这个函数的一个版本sql\u join.SQLServerConnection
正在运行(虽然还没有完成)。我的函数尽可能基于sql\u join.DBIConnection
。我遇到的一个问题是,sql\u join.DBIConnection
调用了dplyr
中许多未导出的函数,例如common\u by
。目前,我已经通过使用dplyr:::common_by
解决了这个问题,但我知道这不是理想的做法
我应该:
dplyr
的软件包的人的生活更轻松:
操作符调用函数sql_join.SQLServerConnection <- function (con, x, y, type = "inner", by = NULL, ...) {
join <- switch(type, left = sql("LEFT"), inner = sql("INNER"),
right = sql("RIGHT"), full = sql("FULL"), stop("Unknown join type:",
type, call. = FALSE))
by <- dplyr:::common_by(by, x, y)
using <- FALSE # all(by$x == by$y)
x_names <- dplyr:::auto_names(x$select)
y_names <- dplyr:::auto_names(y$select)
# more code
}
sql\u join.SQLServerConnection在我看来,您可能不必使用这些函数。由于dplyr
现在将其数据库功能放在dbplyr
中,因此相关代码为。我看不到auto_name
或common_by
在那里的用法
我强烈建议在阅读后遵循中的步骤
还值得回顾一下其他一些备选后端,例如使用JDBC的Apache Drill的Hrbrmaster @hadley这可能是您最佳实践部分的一个很好的旁注/案例研究。@NickK,只是旁注:我在Google BigQuery中遇到了类似的问题,并使用:
实现了sql\u join
。请看看这个。我的猜测是,它很有可能在开箱即用的情况下与SQL Server一起工作。@NickK,也在主题:请参见(已合并的)pull请求中。我被明确鼓励在:
中重新使用dplyr
函数,而不是重新实现它。@akhmed,谢谢。看起来您遇到了与SQL Server类似的问题,并且有类似的解决方案!我会试试看。如果它在BigQuery之外也有用的话,那就太好了!(我想唯一的变化是:SQL Server需要将“JOIN EACH”替换回“JOIN”)