我正在研究RSQLServer包的一个分支,并试图实现连接。使用当前版本的包,任何 DBI 连接数据库的连接都使用sql_join.DBIConnection. 但是,该实现不适用于 SQL 服务器。例如,它使用USINGSQL 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
}