编写一个使用 dbplyr 调用 tbl() 的包函数
Writing a package function that uses a dbplyr call to tbl()
我有一个简单的函数,应该使用 DBI::dbConnect()
连接获取 table。我在调用 tbl()
时遇到问题,它在交互式会话中运行良好。
我的函数:
a2_db_read <- function(con, tbl_name, schema = "dbo"){
if(schema == "dbo"){
dplyr::tbl(con, tbl_name)
}
else{
dplyr::tbl(con, dbplyr::in_schema(schema, tbl_name))
}
}
如果我打电话 dplyr::tbl()
我得到:
Error in UseMethod("tbl") :
no applicable method for 'tbl' applied to an object of class "Microsoft SQL Server"
如果我打电话 dbplyr::tbl()
我得到:
a2_db_read(a2_con_uat, "AVL Data")
Error: 'tbl' is not an exported object from 'namespace:dbplyr'
我怎样才能使函数调用成功?我的包裹进口是:
Imports:
DBI,
dbplyr,
dplyr,
ggplot2,
odbc
我用 dplyr::tbl()
得到了它,正确的用法。
问题是我的连接是作为对象存储在包中的,而实际上每次重新启动 R 时都需要建立连接。
在全新的 R 环境中,存储的陈旧连接导致错误:
Error in UseMethod("tbl") :
no applicable method for 'tbl' applied to an object of class "Microsoft SQL Server"
当我重新生成连接时,它起作用了。
我有一个简单的函数,应该使用 DBI::dbConnect()
连接获取 table。我在调用 tbl()
时遇到问题,它在交互式会话中运行良好。
我的函数:
a2_db_read <- function(con, tbl_name, schema = "dbo"){
if(schema == "dbo"){
dplyr::tbl(con, tbl_name)
}
else{
dplyr::tbl(con, dbplyr::in_schema(schema, tbl_name))
}
}
如果我打电话 dplyr::tbl()
我得到:
Error in UseMethod("tbl") :
no applicable method for 'tbl' applied to an object of class "Microsoft SQL Server"
如果我打电话 dbplyr::tbl()
我得到:
a2_db_read(a2_con_uat, "AVL Data")
Error: 'tbl' is not an exported object from 'namespace:dbplyr'
我怎样才能使函数调用成功?我的包裹进口是:
Imports:
DBI,
dbplyr,
dplyr,
ggplot2,
odbc
我用 dplyr::tbl()
得到了它,正确的用法。
问题是我的连接是作为对象存储在包中的,而实际上每次重新启动 R 时都需要建立连接。
在全新的 R 环境中,存储的陈旧连接导致错误:
Error in UseMethod("tbl") : no applicable method for 'tbl' applied to an object of class "Microsoft SQL Server"
当我重新生成连接时,它起作用了。