我正在研究RSQLServer
包的一个分支,并试图实现连接。使用当前版本的包,任何 DBI 连接数据库的连接都使用sql_join.DBIConnection
. 但是,该实现不适用于 SQL 服务器。例如,它使用USING
SQL Server 不支持的。
我有这个功能的一个版本sql_join.SQLServerConnection
工作(虽然还没有完成)。我sql_join.DBIConnection
尽可能地基于我的功能。我遇到的一个问题是sql_join.DBIConnection
在dplyr
诸如common_by
. 目前,我已经通过使用来解决这个问题dplyr:::common_by
,但我知道这不是理想的做法。
我是不是该:
- 请 Hadley Wickham/Romain Francois 导出相关功能,让开发基于
dplyr
? - 将内部函数复制到我正在处理的包中?
- 继续使用
:::
运算符调用函数? - 还有什么?
显然,对于选项 3,界面有可能会发生变化(因为它们不是导出的函数)并且包会在较长时间内损坏。
示例代码:
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
}